/************************************************************************
|
|
POLHEMUS PROPRIETARY
|
|
Polhemus
|
P.O. Box 560
|
Colchester, Vermont 05446
|
(802) 655-3159
|
|
|
|
|
Copyright © 2005 by Polhemus
|
All Rights Reserved.
|
|
|
*************************************************************************/
|
|
// Quaternion.h: interface for the CQuaternion class.
|
//
|
//////////////////////////////////////////////////////////////////////
|
|
#if !defined(AFX_QUATERNION_H__D76D8B96_F74D_41A4_869E_C3A397F9AA7A__INCLUDED_)
|
#define AFX_QUATERNION_H__D76D8B96_F74D_41A4_869E_C3A397F9AA7A__INCLUDED_
|
|
const float PI=3.14159265f;
|
const float DEG2RADS=PI/180.0f;
|
|
|
class CQuaternion
|
{
|
private:
|
void Normalize();
|
float q0;
|
float q1;
|
float q2;
|
float q3;
|
public:
|
CQuaternion Slerp(const CQuaternion& q, float t) const;
|
CQuaternion operator+(const CQuaternion& q1) const;
|
void GetAngle(float& a,bool deg=true);
|
void SetFromEulers(float* eul, bool deg=true);
|
void MakeLargestElementPos();
|
static void Quats2Eul(float* eul,float* quats,bool isDeg=true);
|
static void Eul2Quat(float* quat,float* eul,bool isDeg=true);
|
bool IsIdentity();
|
void SetQuatVals(const float w,const float x,const float y,const float z);
|
void SetQuatVals(const float val[4]);
|
float GetQuatVal(int ind) const;
|
void GetQuatVal(float vals[4]) const;
|
CQuaternion operator-(const CQuaternion& quat)const;
|
CQuaternion GetDeltaQuat(const CQuaternion& quat) const;
|
void GetAxisAngle(float vect[3],float& angle,bool deg=true) const;
|
CQuaternion operator -() const;
|
CQuaternion operator*(const CQuaternion& quat2) const;
|
CQuaternion operator*(const float ) const;
|
void operator *=(const CQuaternion &quat);
|
void GetAttMat(float mat[3][3]) const;
|
void GetEuler(float aer[3],bool deg=true) const;
|
void GetEuler(float& az,float& el,float& rl,bool deg=true) const;
|
CQuaternion(const float vect[3],float angle,bool deg=true);
|
CQuaternion(float q0,float q1,float q2,float q3);
|
CQuaternion(const float q[4]);
|
CQuaternion(float az, float el,float roll,bool deg=true);
|
CQuaternion();
|
virtual ~CQuaternion();
|
|
};
|
|
#endif // !defined(AFX_QUATERNION_H__D76D8B96_F74D_41A4_869E_C3A397F9AA7A__INCLUDED_)
|