From a62a283afa0456f0467400f3a921d8fdb7e6da4a Mon Sep 17 00:00:00 2001
From: fdai7322 <christoph-anton.schwierz@informatik.hs-fulda.de>
Date: Mon, 17 Jun 2024 18:15:03 +0200
Subject: [PATCH] matrix4Product()

---
 src/cg/utils.ts | 24 +++++++++++++++++++++++-
 1 file changed, 23 insertions(+), 1 deletion(-)

diff --git a/src/cg/utils.ts b/src/cg/utils.ts
index b8a55f3..0975c8a 100644
--- a/src/cg/utils.ts
+++ b/src/cg/utils.ts
@@ -142,8 +142,30 @@ export type Matrix4 = [
 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], 
+    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]];
 }
+
+export function matrix4Product(a: Matrix4, b: Matrix4):Matrix4 {
+     // for 4x4 matrix only
+    //[
+    //    0 1 2 3
+    //    4 5 6 7
+    //    8 9 10 11
+    //    12 13 14 15
+    //  ]
+    return [
+        //row 1
+        a[0]*b[0] + a[1]*b[4] + a[2]*b[8] + a[3]*b[12], a[0]*b[1] + a[1]*b[5] + a[2]*b[9] + a[3]*b[13], a[0]*b[2] + a[1]*b[6] + a[2]*b[10] + a[3]*b[14], a[0]*b[3] + a[1]*b[7] + a[2]*b[11] + a[3]*b[15],
+        //row 2
+        a[4]*b[0] + a[5]*b[4] + a[6]*b[8] + a[7]*b[12], a[4]*b[1] + a[5]*b[5] + a[6]*b[9] + a[7]*b[13], a[4]*b[2] + a[5]*b[6] + a[6]*b[10] + a[7]*b[14], a[4]*b[3] + a[5]*b[7] + a[6]*b[11] + a[7]*b[15],
+        //row 3
+        a[8]*b[0] + a[9]*b[4] + a[10]*b[8] + a[11]*b[12], a[8]*b[1] + a[9]*b[5] + a[10]*b[9] + a[11]*b[13], a[8]*b[2] + a[9]*b[6] + a[10]*b[10] + a[11]*b[14], a[8]*b[3] + a[9]*b[7] + a[10]*b[11] + a[11]*b[15],
+        //row 4
+        a[12]*b[0] + a[13]*b[4] + a[14]*b[8] + a[15]*b[12], a[12]*b[1] + a[13]*b[5] + a[14]*b[9] + a[15]*b[13], a[12]*b[2] + a[13]*b[6] + a[14]*b[10] + a[15]*b[14], a[12]*b[3] + a[13]*b[7] + a[14]*b[11] + a[15]*b[15]
+
+    ]
+}
 //
\ No newline at end of file
-- 
GitLab