Просмотр исходного кода

Added Quaternion::ToEulerAngles

This will convert a quaternion to a vector3 with yaw/pitch/roll in radians(Euler Angles).
cib 12 лет назад
Родитель
Сommit
815f725589
1 измененных файлов с 9 добавлено и 0 удалено
  1. 9 0
      Core/Contents/Include/PolyQuaternion.h

+ 9 - 0
Core/Contents/Include/PolyQuaternion.h

@@ -237,6 +237,15 @@ namespace Polycode {
         y = fSin*rkAxis.y;
         z = fSin*rkAxis.z;
     }
+
+	void ToEulerAngles (Vector3& eulerAngles) {
+		// See http://en.wikipedia.org/wiki/Conversion_between_quaternions_and_Euler_angles
+		// q0 = w, q1 = x, q2 = y, q3 = z
+		eulerAngles.x = atan2( 2 * ( w * x + y * z), 1 - 2 * (x * x + y * y) );
+		eulerAngles.y = asin(2 * ( w * y - z * x));
+		eulerAngles.z = atan2( 2 * ( w * z + x * y), 1 - 2 * (y * y + z * z) );
+	}
+
     //-----------------------------------------------------------------------
     void ToAngleAxis (Number& rfAngle, Vector3& rkAxis) 
     {