A hackable template for creating small and fast browser games.
1import {Vec4} from "./math.js";
2
3export function vec4_set(out: Vec4, x: number, y: number, z: number, w: number) {
4 out[0] = x;
5 out[1] = y;
6 out[2] = z;
7 out[3] = w;
8 return out;
9}
10
11export function vec4_copy(out: Vec4, a: Vec4) {
12 out[0] = a[0];
13 out[1] = a[1];
14 out[2] = a[2];
15 out[3] = a[3];
16 return out;
17}
18
19export function vec4_add(out: Vec4, a: Vec4, b: Vec4) {
20 out[0] = a[0] + b[0];
21 out[1] = a[1] + b[1];
22 out[2] = a[2] + b[2];
23 out[3] = a[3] + b[3];
24 return out;
25}
26
27export function vec4_subtract(out: Vec4, a: Vec4, b: Vec4) {
28 out[0] = a[0] - b[0];
29 out[1] = a[1] - b[1];
30 out[2] = a[2] - b[2];
31 out[3] = a[3] - b[3];
32 return out;
33}
34
35export function vec4_scale(out: Vec4, a: Vec4, b: number) {
36 out[0] = a[0] * b;
37 out[1] = a[1] * b;
38 out[2] = a[2] * b;
39 out[3] = a[3] * b;
40 return out;
41}
42
43export function vec4_lerp(out: Vec4, a: Vec4, b: Vec4, t: number) {
44 let ax = a[0];
45 let ay = a[1];
46 let az = a[2];
47 let aw = a[3];
48 out[0] = ax + t * (b[0] - ax);
49 out[1] = ay + t * (b[1] - ay);
50 out[2] = az + t * (b[2] - az);
51 out[3] = aw + t * (b[3] - aw);
52 return out;
53}