Browse Source

Add linalg.vector_lerp, linalg.vector_unlerp

gingerBill 5 years ago
parent
commit
1bc6e6a7cc
1 changed files with 17 additions and 0 deletions
  1. 17 0
      core/math/linalg/linalg.odin

+ 17 - 0
core/math/linalg/linalg.odin

@@ -83,6 +83,23 @@ length :: proc{vector_length, quaternion_length};
 length2 :: proc{vector_length2, quaternion_length2};
 
 
+vector_lerp :: proc(x, y, t: $V/[$N]$E) -> V where IS_NUMERIC(E) {
+	s: V;
+	for i in 0..<N {
+		ti := t[i];
+		s[i] = x[i]*(1-ti) + y[i]*ti;
+	}
+	return s;
+}
+
+vector_unlerp :: proc(a, b, x: $V/[$N]$E) -> V where IS_NUMERIC(E) {
+	s: V;
+	for i in 0..<N {
+		ai := a[i];
+		s[i] = (x[i]-ai)/(b[i]-ai);
+	}
+	return s;
+}
 
 vector_sin :: proc(angle: $V/[$N]$E) -> V where IS_NUMERIC(E) {
 	s: V;