diff --git a/src/cg/utils.ts b/src/cg/utils.ts index 69af7d1f68baf103488faff7daa66bb952a38034..b8a55f343d34f9b687f2ce780754576f2add7245 100644 --- a/src/cg/utils.ts +++ b/src/cg/utils.ts @@ -122,4 +122,28 @@ export function rotZ(degrees: number){ 0, 0, 1 ] } + +export type Vec3 = [number, number, number]; +export type Vec4 = [number, number, number, number]; + +export type Matrix3 = [ + number, number, number, + number, number, number, + number, number, number +] + +export type Matrix4 = [ + number, number, number, number, + number, number, number, number, + number, number, number, number, + number, number, number, number +]; + +export function multVec3Matrix4(v: Vec3, m: Matrix4):Vec3 { + const v4: Vec4 = [v[0], v[1], v[2], 1] + + return [v4[0]*m[0] + v4[1]*m[4] + v4[2]*m[8] + v4[3]*m[12], + v4[0]*m[1] + v4[1]*m[5] + v4[2]*m[9] + v4[3]*m[13], + v4[0]*m[2] + v4[1]*m[6] + v4[2]*m[10] + v4[3]*m[14]]; +} // \ No newline at end of file