]> git.nega.tv - josh/narcissus/commitdiff
Simplify `Mat3::mul`
authorJoshua Simmons <josh@nega.tv>
Mon, 14 Nov 2022 20:52:28 +0000 (21:52 +0100)
committerJoshua Simmons <josh@nega.tv>
Mon, 14 Nov 2022 20:52:28 +0000 (21:52 +0100)
narcissus-maths/src/mat3.rs

index 3ef28c80b0d764473187eeb825204b826d730f41..af44149e7151357dcb71bed43c26eb794b04961c 100644 (file)
@@ -165,25 +165,25 @@ impl std::ops::Mul for Mat3 {
 
     #[inline(always)]
     fn mul(self, rhs: Self) -> Self::Output {
-        let mut result = Mat3::IDENTITY;
-        {
-            let lhs = self.as_rows();
-            let rhs = rhs.as_rows();
-            let result = result.as_rows_mut();
-
-            result[0][0] = lhs[0][0] * rhs[0][0] + lhs[0][1] * rhs[1][0] + lhs[0][2] * rhs[2][0];
-            result[0][1] = lhs[0][0] * rhs[0][1] + lhs[0][1] * rhs[1][1] + lhs[0][2] * rhs[2][1];
-            result[0][2] = lhs[0][0] * rhs[0][2] + lhs[0][1] * rhs[1][2] + lhs[0][2] * rhs[2][2];
-
-            result[1][0] = lhs[1][0] * rhs[0][0] + lhs[1][1] * rhs[1][0] + lhs[1][2] * rhs[2][0];
-            result[1][1] = lhs[1][0] * rhs[0][1] + lhs[1][1] * rhs[1][1] + lhs[1][2] * rhs[2][1];
-            result[1][2] = lhs[1][0] * rhs[0][2] + lhs[1][1] * rhs[1][2] + lhs[1][2] * rhs[2][2];
-
-            result[2][0] = lhs[2][0] * rhs[0][0] + lhs[2][1] * rhs[1][0] + lhs[2][2] * rhs[2][0];
-            result[2][1] = lhs[2][0] * rhs[0][1] + lhs[2][1] * rhs[1][1] + lhs[2][2] * rhs[2][1];
-            result[2][2] = lhs[2][0] * rhs[0][2] + lhs[2][1] * rhs[1][2] + lhs[2][2] * rhs[2][2];
-        }
-        result
+        let lhs = self.as_rows();
+        let rhs = rhs.as_rows();
+        Mat3::from_rows([
+            [
+                lhs[0][0] * rhs[0][0] + lhs[0][1] * rhs[1][0] + lhs[0][2] * rhs[2][0],
+                lhs[0][0] * rhs[0][1] + lhs[0][1] * rhs[1][1] + lhs[0][2] * rhs[2][1],
+                lhs[0][0] * rhs[0][2] + lhs[0][1] * rhs[1][2] + lhs[0][2] * rhs[2][2],
+            ],
+            [
+                lhs[1][0] * rhs[0][0] + lhs[1][1] * rhs[1][0] + lhs[1][2] * rhs[2][0],
+                lhs[1][0] * rhs[0][1] + lhs[1][1] * rhs[1][1] + lhs[1][2] * rhs[2][1],
+                lhs[1][0] * rhs[0][2] + lhs[1][1] * rhs[1][2] + lhs[1][2] * rhs[2][2],
+            ],
+            [
+                lhs[2][0] * rhs[0][0] + lhs[2][1] * rhs[1][0] + lhs[2][2] * rhs[2][0],
+                lhs[2][0] * rhs[0][1] + lhs[2][1] * rhs[1][1] + lhs[2][2] * rhs[2][1],
+                lhs[2][0] * rhs[0][2] + lhs[2][1] * rhs[1][2] + lhs[2][2] * rhs[2][2],
+            ],
+        ])
     }
 }