Orthonormalize the interpolated reference frame
authorparasti <parasti@78b8d119-cf0a-0410-b17c-f493084dd1d7>
Fri, 11 Feb 2011 00:20:16 +0000 (00:20 +0000)
committerparasti <parasti@78b8d119-cf0a-0410-b17c-f493084dd1d7>
Fri, 11 Feb 2011 00:20:16 +0000 (00:20 +0000)
git-svn-id: https://s.snth.net/svn/neverball/trunk@3488 78b8d119-cf0a-0410-b17c-f493084dd1d7

share/vec3.h

index d540bae..005c714 100644 (file)
     v_cpy((d)[2], (e)[2]); \
 }
 
+#define e_orthonrm(e) {            \
+    v_crs((e)[0], (e)[1], (e)[2]); \
+    v_crs((e)[2], (e)[0], (e)[1]); \
+    v_nrm((e)[0], (e)[0]);         \
+    v_nrm((e)[1], (e)[1]);         \
+    v_nrm((e)[2], (e)[2]);         \
+}
+
 #define e_lerp(c, d, e, a) {           \
     v_lerp((c)[0], (d)[0], (e)[0], a); \
     v_lerp((c)[1], (d)[1], (e)[1], a); \
     v_lerp((c)[2], (d)[2], (e)[2], a); \
+    e_orthonrm(c);                     \
 }
 
 /*---------------------------------------------------------------------------*/