summaryrefslogtreecommitdiff
path: root/engine/src/data_types
diff options
context:
space:
mode:
Diffstat (limited to 'engine/src/data_types')
-rw-r--r--engine/src/data_types/matrix.rs39
1 files changed, 39 insertions, 0 deletions
diff --git a/engine/src/data_types/matrix.rs b/engine/src/data_types/matrix.rs
index e28c73f..a1e9bb6 100644
--- a/engine/src/data_types/matrix.rs
+++ b/engine/src/data_types/matrix.rs
@@ -293,6 +293,45 @@ where
fn mul(self, rhs: Matrix<Value, ROWS, RHS_COLUMNS>) -> Self::Output
{
+ &self * &rhs
+ }
+}
+
+impl<Value, const ROWS: usize, const COLUMNS: usize, const RHS_COLUMNS: usize>
+ Mul<&Matrix<Value, ROWS, RHS_COLUMNS>> for Matrix<Value, ROWS, COLUMNS>
+where
+ Value: Mul<Output = Value> + Add<Output = Value> + Default + Copy,
+{
+ type Output = Matrix<Value, ROWS, RHS_COLUMNS>;
+
+ fn mul(self, rhs: &Matrix<Value, ROWS, RHS_COLUMNS>) -> Self::Output
+ {
+ &self * rhs
+ }
+}
+
+impl<Value, const ROWS: usize, const COLUMNS: usize, const RHS_COLUMNS: usize>
+ Mul<Matrix<Value, ROWS, RHS_COLUMNS>> for &Matrix<Value, ROWS, COLUMNS>
+where
+ Value: Mul<Output = Value> + Add<Output = Value> + Default + Copy,
+{
+ type Output = Matrix<Value, ROWS, RHS_COLUMNS>;
+
+ fn mul(self, rhs: Matrix<Value, ROWS, RHS_COLUMNS>) -> Self::Output
+ {
+ self * &rhs
+ }
+}
+
+impl<Value, const ROWS: usize, const COLUMNS: usize, const RHS_COLUMNS: usize>
+ Mul<&Matrix<Value, ROWS, RHS_COLUMNS>> for &Matrix<Value, ROWS, COLUMNS>
+where
+ Value: Mul<Output = Value> + Add<Output = Value> + Default + Copy,
+{
+ type Output = Matrix<Value, ROWS, RHS_COLUMNS>;
+
+ fn mul(self, rhs: &Matrix<Value, ROWS, RHS_COLUMNS>) -> Self::Output
+ {
// https://en.wikipedia.org/wiki/Matrix_multiplication
let mut out = Self::Output::new();