angle measurements
authorhgn <hgodden00@gmail.com>
Thu, 2 Nov 2023 23:07:23 +0000 (23:07 +0000)
committerhgn <hgodden00@gmail.com>
Thu, 2 Nov 2023 23:07:23 +0000 (23:07 +0000)
vg_m.h

diff --git a/vg_m.h b/vg_m.h
index 4fe4590f944cae4d614e8577ea532998d49e82fa..abd450960be984ba39ff0f5057bbad4225bd6684 100644 (file)
--- a/vg_m.h
+++ b/vg_m.h
@@ -107,6 +107,15 @@ static inline f32 vg_rad( f32 deg )
    return deg * VG_PIf / 180.0f;
 }
 
+/* angle to reach b from a */
+static f32 vg_angle_diff( f32 a, f32 b ){
+   f32 d = fmod(b,VG_TAUf)-fmodf(a,VG_TAUf);
+   if( fabsf(d) > VG_PIf )
+      d = -vg_signf(d) * (VG_TAUf - fabsf(d));
+
+   return d;
+}
+
 /*
  * quantize float to bit count
  */
@@ -690,6 +699,10 @@ static void q_mulv( v4f q, v3f v, v3f d )
    v3_add( v1, v2, d );
 }
 
+static f32 q_dist( v4f q0, v3f q1 ){
+   return acosf( 2.0f * v4_dot(q0,q1) -1.0f );
+}
+
 /*
  * -----------------------------------------------------------------------------
  * Section 4.a                  2x2 matrices