diff options
Diffstat (limited to 'facetracknoir/rotation.h')
| -rw-r--r-- | facetracknoir/rotation.h | 19 | 
1 files changed, 9 insertions, 10 deletions
| diff --git a/facetracknoir/rotation.h b/facetracknoir/rotation.h index 5ff5ce61..b3bb891e 100644 --- a/facetracknoir/rotation.h +++ b/facetracknoir/rotation.h @@ -8,18 +8,17 @@  #pragma once  #include <cmath> -class RotationType { +class Quat {  public: -    RotationType() : a(1.0),b(0.0),c(0.0),d(0.0) {} -    RotationType(double yaw, double pitch, double roll) { fromEuler(yaw, pitch, roll); } -    RotationType(double a, double b, double c, double d) : a(a),b(b),c(c),d(d) {} +    Quat() : a(1.0),b(0.0),c(0.0),d(0.0) {} +    Quat(double yaw, double pitch, double roll) { fromEuler(yaw, pitch, roll); } +    Quat(double a, double b, double c, double d) : a(a),b(b),c(c),d(d) {} -    RotationType inv(){ -        return RotationType(a,-b,-c, -d); +    Quat inv(){ +        return Quat(a,-b,-c, -d);      } -      // conversions      // see http://en.wikipedia.org/wiki/Conversion_between_quaternions_and_Euler_angles      void fromEuler(double yaw, double pitch, double roll) @@ -45,10 +44,10 @@ public:          yaw =  atan2(2.0*(a*d + b*c), 1.0 - 2.0*(c*c + d*d));      } -    const RotationType operator*(const RotationType& B) const +    const Quat operator*(const Quat& B) const      { -        const RotationType& A = *this; -        return RotationType(A.a*B.a - A.b*B.b - A.c*B.c - A.d*B.d,	// quaternion multiplication +        const Quat& A = *this; +        return Quat(A.a*B.a - A.b*B.b - A.c*B.c - A.d*B.d,	// quaternion multiplication                          A.a*B.b + A.b*B.a + A.c*B.d - A.d*B.c,                          A.a*B.c - A.b*B.d + A.c*B.a + A.d*B.b,                          A.a*B.d + A.b*B.c - A.c*B.b + A.d*B.a); | 
