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