Go to the documentation of this file.00001
00009 #ifndef TG_QUATERNION
00010 #define TG_QUATERNION
00011
00012 #include <math.h>
00013
00014 #include <blort/TomGine/tgMathlib.h>
00015
00016 namespace TomGine{
00017
00018 const float ftol = 0.0001f;
00019
00021 class tgQuaternion
00022 {
00023 private:
00024
00025
00026 public:
00027 float x,y,z,w;
00028 tgQuaternion();
00029 tgQuaternion(float x, float y, float z, float w);
00030
00031 void normalise();
00032 tgQuaternion getConjugate() const;
00033 tgQuaternion operator+ (const tgQuaternion &q2) const;
00034 tgQuaternion operator- (const tgQuaternion &q2) const;
00035 tgQuaternion operator* (const tgQuaternion &rq);
00036 tgQuaternion operator* (const float f);
00037
00038 vec3 operator* (const vec3 &vec);
00039
00040 void fromAxis(const vec3 &v, float angle);
00041 void fromEuler(float pitch, float yaw, float roll);
00042 void fromMatrix(mat3 m);
00043 void fromMatrix(mat4 m);
00044 mat4 getMatrix4() const;
00045 mat3 getMatrix3() const;
00046 void getAxisAngle(vec3& axis, float& angle) const;
00047
00048 void print() const;
00049
00050 };
00051
00052 }
00053
00054 #endif