浏览代码

Split out `linalg.identity` between matrices and array-based matrix

gingerBill 1 年之前
父节点
当前提交
900fe95ba0
共有 1 个文件被更改,包括 11 次插入1 次删除
  1. 11 1
      core/math/linalg/general.odin

+ 11 - 1
core/math/linalg/general.odin

@@ -172,13 +172,23 @@ projection :: proc "contextless" (x, normal: $T/[$N]$E) -> T where IS_NUMERIC(E)
 }
 
 @(require_results)
-identity :: proc "contextless" ($T: typeid/[$N][N]$E) -> (m: T) #no_bounds_check {
+identity_array_based_matrix :: proc "contextless" ($T: typeid/[$N][N]$E) -> (m: T) #no_bounds_check {
 	for i in 0..<N {
 		m[i][i] = E(1)
 	}
 	return m
 }
 
+@(require_results)
+identity_matrix :: proc "contextless" ($T: typeid/matrix[$N, N]$E) -> T #no_bounds_check {
+	return 1
+}
+
+identity :: proc{
+	identity_array_based_matrix,
+	identity_matrix,
+}
+
 transpose :: intrinsics.transpose
 
 @(require_results)