A hackable template for creating small and fast browser games.
at main 53 lines 1.2 kB view raw
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}