All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
Quaternion.h
1 // Copyright eeGeo Ltd (2012-2014), All Rights Reserved
2 
3 #pragma once
4 
5 #include "VectorMathDecl.h"
6 
7 namespace Eegeo
8 {
9  class Quaternion
10  {
11  public:
12  float x, y, z, w;
13 
14  Quaternion ();
15  Quaternion (float nx, float ny, float nz, float nw);
16 
17  void Identity ();
18  void Normalise ();
19 
20  void Set (const Eegeo::v3& v3Axis, float angle);
21  void GetAxisAngle (Eegeo::v3& v3Axis, float& angle) const;
22  void GetMatrix (Eegeo::m44& matrix) const;
23  Eegeo::v3 RotatePoint (Eegeo::v3 point) const;
24 
25  static void Multiply (Quaternion& dest, const Quaternion& source1, const Quaternion& source2);
26  static void Slerp (Quaternion& dest, const Quaternion& source1, const Quaternion& source2, float delta);
27 
28  static Quaternion ExtractQuaternion(const Eegeo::m33 & inMat);
29  static void ExtractQuaternion(Quaternion& outQuat, const Eegeo::m33 & inMat);
30 
31  static Quaternion CreateIdentity();
32  };
33 
34 }