Răsfoiți Sursa

mQuat.h change to fix QuatF::angleBetween

The old version doesn't have that 2.0f in the return that seems to be needed.
Also added normalizing inside so it can be used for not-normalized quaternions too.
irei1as 10 ani în urmă
părinte
comite
3630f97ab1
1 a modificat fișierele cu 7 adăugiri și 2 ștergeri
  1. 7 2
      Engine/source/math/mQuat.h

+ 7 - 2
Engine/source/math/mQuat.h

@@ -227,8 +227,13 @@ inline F32 QuatF::dot( const QuatF &q ) const
 
 inline F32 QuatF::angleBetween( const QuatF & q )
 {
-   // angle between to quaternions
-   return mAcos(x * q.x + y * q.y + z * q.z + w * q.w);
+   // angle between two quaternions
+   QuatF base(x,y,z,w);
+   base=base.normalize();
+   QuatF q_norm=q;
+   q_norm=q_norm.normalize();
+   return 2.0f*mAcos(base.dot(q_norm));
 }
 
+
 #endif // _MQUAT_H_