Browse Source

Fix linalg.mul; add linalg.Matrix1xN

gingerBill 5 years ago
parent
commit
f9aaff99c6
1 changed files with 13 additions and 7 deletions
  1. 13 7
      core/math/linalg/linalg.odin

+ 13 - 7
core/math/linalg/linalg.odin

@@ -85,21 +85,21 @@ mul_matrix :: proc(a, b: $M/[$N][N]$E) -> (c: M)
 	for i in 0..<N {
 	for i in 0..<N {
 		for k in 0..<N {
 		for k in 0..<N {
 			for j in 0..<N {
 			for j in 0..<N {
-				c[i][k] += a[i][j] * b[j][k];
+				c[k][i] += a[j][i] * b[k][j];
 			}
 			}
 		}
 		}
 	}
 	}
 	return;
 	return;
 }
 }
 
 
-mul_matrix_differ :: proc(a: $A/[$I][$J]$E, b: $B/[J][$K]E) -> (c: [I][K]E)
+mul_matrix_differ :: proc(a: $A/[$J][$I]$E, b: $B/[$K][J]E) -> (c: [K][I]E)
 	where !intrinsics.type_is_array(E),
 	where !intrinsics.type_is_array(E),
 	      intrinsics.type_is_numeric(E),
 	      intrinsics.type_is_numeric(E),
-	      I != J {
-	for i in 0..<I {
-		for k in 0..<K {
-			for j in 0..<J {
-				c[i][k] += a[i][j] * b[j][k];
+	      I != K {
+	for k in 0..<K {
+		for j in 0..<J {
+			for i in 0..<I {
+				c[k][i] += a[j][i] * b[k][j];
 			}
 			}
 		}
 		}
 	}
 	}
@@ -156,6 +156,11 @@ Vector2 :: distinct [2]Float;
 Vector3 :: distinct [3]Float;
 Vector3 :: distinct [3]Float;
 Vector4 :: distinct [4]Float;
 Vector4 :: distinct [4]Float;
 
 
+Matrix1x1 :: distinct [1][1]Float;
+Matrix1x2 :: distinct [1][2]Float;
+Matrix1x3 :: distinct [1][3]Float;
+Matrix1x4 :: distinct [1][4]Float;
+
 Matrix2x1 :: distinct [2][1]Float;
 Matrix2x1 :: distinct [2][1]Float;
 Matrix2x2 :: distinct [2][2]Float;
 Matrix2x2 :: distinct [2][2]Float;
 Matrix2x3 :: distinct [2][3]Float;
 Matrix2x3 :: distinct [2][3]Float;
@@ -172,6 +177,7 @@ Matrix4x3 :: distinct [4][3]Float;
 Matrix4x4 :: distinct [4][4]Float;
 Matrix4x4 :: distinct [4][4]Float;
 
 
 
 
+Matrix1 :: Matrix1x1;
 Matrix2 :: Matrix2x2;
 Matrix2 :: Matrix2x2;
 Matrix3 :: Matrix3x3;
 Matrix3 :: Matrix3x3;
 Matrix4 :: Matrix4x4;
 Matrix4 :: Matrix4x4;