Wml::Quaternion< Real > Class Template Reference
[Math Objects]

#include <WmlQuaternion.h>


Detailed Description

template<class Real>
class Wml::Quaternion< Real >

Template class for a Quaternion.

Note:
The DigitalSpaces::in_Quaternionf* and DigitalSpaces::out_Quaternionf* operators are hacked in here, causing warnings as it is only appropriate for one of the possible template instantiations.

Public Member Functions

 Quaternion ()
 Quaternion (Real fW, Real fX, Real fY, Real fZ)
 Quaternion (const Quaternion &rkQ)
 Quaternion (const Matrix3< Real > &rkRot)
 Quaternion (const Vector3< Real > &rkAxis, Real fAngle)
 Quaternion (const Vector3< Real > akRotColumn[3])
 operator const Real * () const
 operator Real * ()
Real operator[] (int i) const
Real & operator[] (int i)
Real W () const
Real & W ()
Real X () const
Real & X ()
Real Y () const
Real & Y ()
Real Z () const
Real & Z ()
 Quaternion (DigitalSpaces::in_Quaternionf *pIn)
 operator DigitalSpaces::in_Quaternionf * () const
 operator DigitalSpaces::out_Quaternionf * ()
Quaternionoperator= (const Quaternion &rkQ)
bool operator== (const Quaternion &rkQ) const
bool operator!= (const Quaternion &rkQ) const
bool operator< (const Quaternion &rkQ) const
bool operator<= (const Quaternion &rkQ) const
bool operator> (const Quaternion &rkQ) const
bool operator>= (const Quaternion &rkQ) const
Quaternion operator+ (const Quaternion &rkQ) const
Quaternion operator- (const Quaternion &rkQ) const
Quaternion operator* (const Quaternion &rkQ) const
Quaternion operator* (Real fScalar) const
Quaternion operator/ (Real fScalar) const
Quaternion operator- () const
Quaternionoperator+= (const Quaternion &rkQ)
Quaternionoperator-= (const Quaternion &rkQ)
Quaternionoperator*= (Real fScalar)
Quaternionoperator/= (Real fScalar)
void FromRotationMatrix (const Matrix3< Real > &rkRot)
void ToRotationMatrix (Matrix3< Real > &rkRot) const
void FromRotationMatrix (const Vector3< Real > akRotColumn[3])
void ToRotationMatrix (Vector3< Real > akRotColumn[3]) const
void FromAxisAngle (const Vector3< Real > &rkAxis, Real fAngle)
void ToAxisAngle (Vector3< Real > &rkAxis, Real &rfAngle) const
Real Dot (const Quaternion &rkQ) const
Quaternion Inverse () const
Quaternion Conjugate () const
Quaternion Exp () const
Quaternion Log () const
Vector3< Real > operator* (const Vector3< Real > &rkVector) const
void DecomposeTwistTimesNoTwist (const Vector3< Real > &rkAxis, Quaternion &rkTwist, Quaternion &rkNoTwist)
void DecomposeNoTwistTimesTwist (const Vector3< Real > &rkAxis, Quaternion &rkTwist, Quaternion &rkNoTwist)
Real normalise (void)

Static Public Member Functions

static Quaternion Slerp (Real fT, const Quaternion &rkP, const Quaternion &rkQ, bool shortestPath=true)
static Quaternion SlerpExtraSpins (Real fT, const Quaternion &rkP, const Quaternion &rkQ, int iExtraSpins)
static Quaternion GetIntermediate (const Quaternion &rkQ0, const Quaternion &rkQ1, const Quaternion &rkQ2)
static Quaternion Squad (Real fT, const Quaternion &rkQ0, const Quaternion &rkA0, const Quaternion &rkA1, const Quaternion &rkQ1)
static Quaternion Align (const Vector3< Real > &rkV1, const Vector3< Real > &rkV2)

Static Public Attributes

static const Quaternion IDENTITY
static const Quaternion ZERO

Protected Member Functions

int CompareArrays (const Quaternion &rkQ) const
Real Norm () const

Protected Attributes

Real m_afTuple [4]

Static Protected Attributes

static int ms_iNext [3]

Constructor & Destructor Documentation

template<class Real>
Wml::Quaternion< Real >::Quaternion (  ) 

template<class Real>
Wml::Quaternion< Real >::Quaternion ( Real  fW,
Real  fX,
Real  fY,
Real  fZ 
)

template<class Real>
Wml::Quaternion< Real >::Quaternion ( const Quaternion< Real > &  rkQ  ) 

template<class Real>
Wml::Quaternion< Real >::Quaternion ( const Matrix3< Real > &  rkRot  ) 

template<class Real>
Wml::Quaternion< Real >::Quaternion ( const Vector3< Real > &  rkAxis,
Real  fAngle 
)

template<class Real>
Wml::Quaternion< Real >::Quaternion ( const Vector3< Real >  akRotColumn[3]  ) 

template<class Real>
Wml::Quaternion< Real >::Quaternion ( DigitalSpaces::in_Quaternionf pIn  ) 


Member Function Documentation

template<class Real>
Wml::Quaternion< Real >::operator const Real * (  )  const

template<class Real>
Wml::Quaternion< Real >::operator Real * (  ) 

template<class Real>
Real Wml::Quaternion< Real >::operator[] ( int  i  )  const

template<class Real>
Real& Wml::Quaternion< Real >::operator[] ( int  i  ) 

template<class Real>
Real Wml::Quaternion< Real >::W (  )  const

template<class Real>
Real& Wml::Quaternion< Real >::W (  ) 

template<class Real>
Real Wml::Quaternion< Real >::X (  )  const

template<class Real>
Real& Wml::Quaternion< Real >::X (  ) 

template<class Real>
Real Wml::Quaternion< Real >::Y (  )  const

template<class Real>
Real& Wml::Quaternion< Real >::Y (  ) 

template<class Real>
Real Wml::Quaternion< Real >::Z (  )  const

template<class Real>
Real& Wml::Quaternion< Real >::Z (  ) 

template<class Real>
Wml::Quaternion< Real >::operator DigitalSpaces::in_Quaternionf * (  )  const [inline]

template<class Real>
Wml::Quaternion< Real >::operator DigitalSpaces::out_Quaternionf * (  )  [inline]

template<class Real>
Quaternion& Wml::Quaternion< Real >::operator= ( const Quaternion< Real > &  rkQ  ) 

template<class Real>
bool Wml::Quaternion< Real >::operator== ( const Quaternion< Real > &  rkQ  )  const

template<class Real>
bool Wml::Quaternion< Real >::operator!= ( const Quaternion< Real > &  rkQ  )  const

template<class Real>
bool Wml::Quaternion< Real >::operator< ( const Quaternion< Real > &  rkQ  )  const

template<class Real>
bool Wml::Quaternion< Real >::operator<= ( const Quaternion< Real > &  rkQ  )  const

template<class Real>
bool Wml::Quaternion< Real >::operator> ( const Quaternion< Real > &  rkQ  )  const

template<class Real>
bool Wml::Quaternion< Real >::operator>= ( const Quaternion< Real > &  rkQ  )  const

template<class Real>
Quaternion Wml::Quaternion< Real >::operator+ ( const Quaternion< Real > &  rkQ  )  const

template<class Real>
Quaternion Wml::Quaternion< Real >::operator- ( const Quaternion< Real > &  rkQ  )  const

template<class Real>
Quaternion Wml::Quaternion< Real >::operator* ( const Quaternion< Real > &  rkQ  )  const

template<class Real>
Quaternion Wml::Quaternion< Real >::operator* ( Real  fScalar  )  const

template<class Real>
Quaternion Wml::Quaternion< Real >::operator/ ( Real  fScalar  )  const

template<class Real>
Quaternion Wml::Quaternion< Real >::operator- (  )  const

template<class Real>
Quaternion& Wml::Quaternion< Real >::operator+= ( const Quaternion< Real > &  rkQ  ) 

template<class Real>
Quaternion& Wml::Quaternion< Real >::operator-= ( const Quaternion< Real > &  rkQ  ) 

template<class Real>
Quaternion& Wml::Quaternion< Real >::operator*= ( Real  fScalar  ) 

template<class Real>
Quaternion& Wml::Quaternion< Real >::operator/= ( Real  fScalar  ) 

template<class Real>
void Wml::Quaternion< Real >::FromRotationMatrix ( const Matrix3< Real > &  rkRot  ) 

template<class Real>
void Wml::Quaternion< Real >::ToRotationMatrix ( Matrix3< Real > &  rkRot  )  const

template<class Real>
void Wml::Quaternion< Real >::FromRotationMatrix ( const Vector3< Real >  akRotColumn[3]  ) 

template<class Real>
void Wml::Quaternion< Real >::ToRotationMatrix ( Vector3< Real >  akRotColumn[3]  )  const

template<class Real>
void Wml::Quaternion< Real >::FromAxisAngle ( const Vector3< Real > &  rkAxis,
Real  fAngle 
)

template<class Real>
void Wml::Quaternion< Real >::ToAxisAngle ( Vector3< Real > &  rkAxis,
Real &  rfAngle 
) const

template<class Real>
Real Wml::Quaternion< Real >::Dot ( const Quaternion< Real > &  rkQ  )  const

template<class Real>
Quaternion Wml::Quaternion< Real >::Inverse (  )  const

template<class Real>
Quaternion Wml::Quaternion< Real >::Conjugate (  )  const

template<class Real>
Quaternion Wml::Quaternion< Real >::Exp (  )  const

template<class Real>
Quaternion Wml::Quaternion< Real >::Log (  )  const

template<class Real>
Vector3<Real> Wml::Quaternion< Real >::operator* ( const Vector3< Real > &  rkVector  )  const

template<class Real>
static Quaternion Wml::Quaternion< Real >::Slerp ( Real  fT,
const Quaternion< Real > &  rkP,
const Quaternion< Real > &  rkQ,
bool  shortestPath = true 
) [static]

template<class Real>
static Quaternion Wml::Quaternion< Real >::SlerpExtraSpins ( Real  fT,
const Quaternion< Real > &  rkP,
const Quaternion< Real > &  rkQ,
int  iExtraSpins 
) [static]

template<class Real>
static Quaternion Wml::Quaternion< Real >::GetIntermediate ( const Quaternion< Real > &  rkQ0,
const Quaternion< Real > &  rkQ1,
const Quaternion< Real > &  rkQ2 
) [static]

template<class Real>
static Quaternion Wml::Quaternion< Real >::Squad ( Real  fT,
const Quaternion< Real > &  rkQ0,
const Quaternion< Real > &  rkA0,
const Quaternion< Real > &  rkA1,
const Quaternion< Real > &  rkQ1 
) [static]

template<class Real>
static Quaternion Wml::Quaternion< Real >::Align ( const Vector3< Real > &  rkV1,
const Vector3< Real > &  rkV2 
) [static]

template<class Real>
void Wml::Quaternion< Real >::DecomposeTwistTimesNoTwist ( const Vector3< Real > &  rkAxis,
Quaternion< Real > &  rkTwist,
Quaternion< Real > &  rkNoTwist 
)

template<class Real>
void Wml::Quaternion< Real >::DecomposeNoTwistTimesTwist ( const Vector3< Real > &  rkAxis,
Quaternion< Real > &  rkTwist,
Quaternion< Real > &  rkNoTwist 
)

template<class Real>
Real Wml::Quaternion< Real >::normalise ( void   )  [inline]

template<class Real>
int Wml::Quaternion< Real >::CompareArrays ( const Quaternion< Real > &  rkQ  )  const [protected]

template<class Real>
Real Wml::Quaternion< Real >::Norm (  )  const [inline, protected]


Field Documentation

template<class Real>
const Quaternion Wml::Quaternion< Real >::IDENTITY [static]

template<class Real>
const Quaternion Wml::Quaternion< Real >::ZERO [static]

template<class Real>
int Wml::Quaternion< Real >::ms_iNext[3] [static, protected]

template<class Real>
Real Wml::Quaternion< Real >::m_afTuple[4] [protected]


The documentation for this class was generated from the following file:

Generated on Sun Aug 31 17:46:33 2008 for Digital Spaces by  doxygen 1.5.6