iso::math::Quaternion< Type > Class Template Reference

quaternion class More...

#include <iso_math_quaternion.h>

Collaboration diagram for iso::math::Quaternion< Type >:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 Quaternion ()
 create identity quaternion
 Quaternion (Type pW, Type pX, Type pY, Type pZ)
 create quaternion directly from components
 Quaternion (Type pValues[4])
 create quaternion directly from array
 Quaternion (Vector4< Type > pVector)
 create quaternion directly from vector
 Quaternion (const Vector3< Type > &pAxis, Type pAngle)
 create quaternion from axis-of-rotation and rotation angle
 Quaternion (const Matrix4< Type > &pMatrix)
 create quaternion from rotation matrix.
 Quaternion (const Vector3< Type > &pVectorA, const Vector3< Type > &pVectorB)
 create quaternion from minimum rotation from vector a into vector b.
 Quaternion (Type pYaw, Type pPitch, Type pRoll)
 create quaternion from euler orientation.
 Quaternion (const Quaternion< Type > &pQuaternion)
 copy constructor
template<class Type2>
 Quaternion (const Quaternion< Type2 > &pQuaternion)
 copy constructor
virtual ~Quaternion ()
 destructor
Type dot (const Quaternion< Type > &pQuat) const
const Quaternion< Type > & operator= (const Quaternion< Type > &pQuat)
 assignment quaternion = quaternion
template<class Type2>
const Quaternion< Type > & operator= (const Quaternion< Type2 > &pQuat)
 assignment quaternion = quaternion
const Quaternion< Type > & operator= (const Vector4< Type > &pVector)
 assignment quaternion = vector
const Quaternion< Type > & scale (Type pValue)
 scale quaternion
void set (Type pW, Type pX, Type pY, Type pZ)
 set quaternion directly from components
void set (const Type pValues[4])
 set quaternion directly from array
void set (const Vector4< Type > pVector)
 set quaternion directly from vector
void set (const Vector3< Type > &pAxis, Type pAngle)
 set quaternion from axis-of-rotation and rotation angle
void set (const Matrix4< Type > &pMatrix)
 set quaternion from rotation matrix.
void set2 (const Vector3< Type > &pVectorA, const Vector3< Type > &pVectorB)
 set quaternion from minimum rotation from vector a into vector b.
void set (const Vector3< Type > &pVectorA, const Vector3< Type > &pVectorB)
 set quaternion from minimum rotation from vector a into vector b.
void set (Type pYaw, Type pPitch, Type pRoll)
 set quaternion from euler orientation.
void get (Vector3< Type > &pAxis, Type &pAngle) const
 get axis-of-rotation and rotation angle from quaternion
void get (Matrix4< Type > &pMatrix) const
 get rotation matrix from quaternion
void get (MatrixH< Type > &pMatrix) const
 get rotation matrix from quaternion
void get (Type &pYaw, Type &pPitch, Type &pRoll) const
 euler orientation from quaternion
const Quaternion< Type > & invert ()
 invert
Quaternion< Type > getInverse () const
 get inverse
const Quaternion< Type > & conjugate ()
 conjugate
Quaternion< Type > getConjugate () const
 get conjugate
const Quaternion< Type > & operator+= (const Quaternion< Type > &pQuat)
 quaternion += quaternion
const Quaternion< Type > & operator-= (const Quaternion< Type > &pQuat)
 quaternion -= quaternion
const Quaternion< Type > & operator *= (Type pValue)
 quaternion *= scalar
const Quaternion< Type > & operator *= (const Quaternion< Type > &pQuat)
 quaternion *= quaternion
const Quaternion< Type > & operator/= (const Quaternion< Type > &pQuat)
 quaternion /= quaternion
Quaternion< Type > operator * (const Type &pValue) const
 quaternion * scalar
Quaternion< Type > operator+ (const Quaternion< Type > &pQuat) const
 quaternion + quaternion
Quaternion< Type > operator- (const Quaternion< Type > &pQuat) const
 quaternion - quaternion
Quaternion< Type > operator * (const Quaternion< Type > &pQuat) const
 quaternion * quaternion
Quaternion< Type > operator/ (Quaternion< Type > &pQuat) const
 quaternion / quaternion
Vector3< Type > operator * (const Vector3< Type > &pVector) const
 vector rotation
Vector3< Type > rotVec (const Vector3< Type > &pVector) const
 vector rotation
bool operator== (const Quaternion< Type > &pQuat) const
 quaternion == quaternion
bool operator!= (const Quaternion< Type > &pQuat) const
 quaternion != quaternion
Type norm () const
 return norm
const Quaternion< Type > & normalise ()
 normalise

Static Public Member Functions

static Type dot (const Quaternion< Type > &pQuat1, const Quaternion< Type > &pQuat2)
static Quaternion< Type > slerp (const Quaternion< Type > &pRot0, const Quaternion< Type > &pRot1, Type pT)
 Interpolates along the shortest path between the two rotation positions (from rot0 to rot1, 0<= t <= 1).

Public Attributes

union {
   struct {
      Type   w
      Type   x
      Type   y
      Type   z
   } 
   Type   c [4]
}; 

Static Public Attributes

static const Quaternion< Type > IDENTITY

Friends

std::ostream & operator<< (std::ostream &os, const Quaternion< Type > pQuat)

Detailed Description

template<class Type>
class iso::math::Quaternion< Type >

quaternion class

Created by Daniel Bisig on 7/16/06. Copyright 2006 Daniel Bisig All rights reserved.


Constructor & Destructor Documentation

template<class Type>
iso::math::Quaternion< Type >::Quaternion (  ) 

create identity quaternion

template<class Type>
iso::math::Quaternion< Type >::Quaternion ( Type  pW,
Type  pX,
Type  pY,
Type  pZ 
)

create quaternion directly from components

Parameters:
pW w
pX x
pY y
pZ z

template<class Type>
iso::math::Quaternion< Type >::Quaternion ( Type  pValues[4]  ) 

create quaternion directly from array

Parameters:
pValues array

template<class Type>
iso::math::Quaternion< Type >::Quaternion ( Vector4< Type >  pVector  ) 

create quaternion directly from vector

Parameters:
pVector vector4

template<class Type>
iso::math::Quaternion< Type >::Quaternion ( const Vector3< Type > &  pAxis,
Type  pAngle 
)

create quaternion from axis-of-rotation and rotation angle

Parameters:
pAxis axis of rotation
pAngle rotation angle

template<class Type>
iso::math::Quaternion< Type >::Quaternion ( const Matrix4< Type > &  pMatrix  ) 

create quaternion from rotation matrix.

Parameters:
pMatrix rotation matrix

template<class Type>
iso::math::Quaternion< Type >::Quaternion ( const Vector3< Type > &  pVectorA,
const Vector3< Type > &  pVectorB 
)

create quaternion from minimum rotation from vector a into vector b.

Parameters:
pVectorA vector a
pVectorB vector b

template<class Type>
iso::math::Quaternion< Type >::Quaternion ( Type  pYaw,
Type  pPitch,
Type  pRoll 
)

create quaternion from euler orientation.

Parameters:
pYaw yaw
pPitch pitch
pRoll roll

template<class Type>
iso::math::Quaternion< Type >::Quaternion ( const Quaternion< Type > &  pQuaternion  ) 

copy constructor

Parameters:
pQuaternion quaternion

template<class Type>
template<class Type2>
iso::math::Quaternion< Type >::Quaternion ( const Quaternion< Type2 > &  pQuaternion  ) 

copy constructor

Parameters:
pQuaternion quaternion

template<class Type>
iso::math::Quaternion< Type >::~Quaternion (  )  [virtual]

destructor


Member Function Documentation

template<class Type>
Type iso::math::Quaternion< Type >::dot ( const Quaternion< Type > &  pQuat  )  const

template<class Type>
Type iso::math::Quaternion< Type >::dot ( const Quaternion< Type > &  pQuat1,
const Quaternion< Type > &  pQuat2 
) [static]

template<class Type>
const Quaternion< Type > & iso::math::Quaternion< Type >::operator= ( const Quaternion< Type > &  pQuat  ) 

assignment quaternion = quaternion

Parameters:
pQuat quaternion
Returns:
quaternion

template<class Type>
template<class Type2>
const Quaternion< Type > & iso::math::Quaternion< Type >::operator= ( const Quaternion< Type2 > &  pQuat  ) 

assignment quaternion = quaternion

Parameters:
pQuat quaternion
Returns:
quaternion

template<class Type>
const Quaternion< Type > & iso::math::Quaternion< Type >::operator= ( const Vector4< Type > &  pVector  ) 

assignment quaternion = vector

Parameters:
pVector vector4
Returns:
quaternion

template<class Type>
const Quaternion< Type > & iso::math::Quaternion< Type >::scale ( Type  pValue  ) 

scale quaternion

Parameters:
pValue value

template<class Type>
void iso::math::Quaternion< Type >::set ( Type  pW,
Type  pX,
Type  pY,
Type  pZ 
)

set quaternion directly from components

Parameters:
pW w
pX x
pY y
pZ z

template<class Type>
void iso::math::Quaternion< Type >::set ( const Type  pValues[4]  ) 

set quaternion directly from array

Parameters:
pValues array

template<class Type>
void iso::math::Quaternion< Type >::set ( const Vector4< Type >  pVector  ) 

set quaternion directly from vector

Parameters:
pVector vector4

template<class Type>
void iso::math::Quaternion< Type >::set ( const Vector3< Type > &  pAxis,
Type  pAngle 
)

set quaternion from axis-of-rotation and rotation angle

Parameters:
pAxis axis of rotation
pAngle rotation angle

template<class Type>
void iso::math::Quaternion< Type >::set ( const Matrix4< Type > &  pMatrix  ) 

set quaternion from rotation matrix.

Parameters:
pMatrix rotation matrix

template<class Type>
void iso::math::Quaternion< Type >::set2 ( const Vector3< Type > &  pVectorA,
const Vector3< Type > &  pVectorB 
)

set quaternion from minimum rotation from vector a into vector b.

Parameters:
pVectorA vector a
pVectorB vector b

template<class Type>
void iso::math::Quaternion< Type >::set ( const Vector3< Type > &  pVectorA,
const Vector3< Type > &  pVectorB 
)

set quaternion from minimum rotation from vector a into vector b.

Parameters:
pVectorA vector a
pVectorB vector b

template<class Type>
void iso::math::Quaternion< Type >::set ( Type  pYaw,
Type  pPitch,
Type  pRoll 
)

set quaternion from euler orientation.

Parameters:
pYaw yaw
pPitch pitch
pRoll roll

template<class Type>
void iso::math::Quaternion< Type >::get ( Vector3< Type > &  pAxis,
Type &  pAngle 
) const

get axis-of-rotation and rotation angle from quaternion

Parameters:
pAxis axis of rotation
pAngle rotation angle

template<class Type>
void iso::math::Quaternion< Type >::get ( Matrix4< Type > &  pMatrix  )  const

get rotation matrix from quaternion

Parameters:
pMatrix rotation matrix

template<class Type>
void iso::math::Quaternion< Type >::get ( MatrixH< Type > &  pMatrix  )  const

get rotation matrix from quaternion

Parameters:
pMatrix rotation matrix

template<class Type>
void iso::math::Quaternion< Type >::get ( Type &  pYaw,
Type &  pPitch,
Type &  pRoll 
) const

euler orientation from quaternion

Parameters:
pYaw yaw
pPitch pitch
pRoll roll

template<class Type>
const Quaternion< Type > & iso::math::Quaternion< Type >::invert (  ) 

invert

Returns:
quaternion
original quaternion modified

template<class Type>
Quaternion< Type > iso::math::Quaternion< Type >::getInverse (  )  const

get inverse

Returns:
quaternion
original quaternion not modified

template<class Type>
const Quaternion< Type > & iso::math::Quaternion< Type >::conjugate (  ) 

conjugate

Returns:
quaternion
original quaternion modified

template<class Type>
Quaternion< Type > iso::math::Quaternion< Type >::getConjugate (  )  const

get conjugate

Returns:
quaternion
original quaternion not modified

template<class Type>
const Quaternion< Type > & iso::math::Quaternion< Type >::operator+= ( const Quaternion< Type > &  pQuat  ) 

quaternion += quaternion

Parameters:
pQuat quaternion
Returns:
quaternion

template<class Type>
const Quaternion< Type > & iso::math::Quaternion< Type >::operator-= ( const Quaternion< Type > &  pQuat  ) 

quaternion -= quaternion

Parameters:
pQuat quaternion
Returns:
quaternion

template<class Type>
const Quaternion< Type > & iso::math::Quaternion< Type >::operator *= ( Type  pValue  ) 

quaternion *= scalar

Parameters:
pValue value
Returns:
quaternion
scale quaternion

template<class Type>
const Quaternion< Type > & iso::math::Quaternion< Type >::operator *= ( const Quaternion< Type > &  pQuat  ) 

quaternion *= quaternion

Parameters:
pQuat quaternion
Returns:
quaternion

template<class Type>
const Quaternion< Type > & iso::math::Quaternion< Type >::operator/= ( const Quaternion< Type > &  pQuat  ) 

quaternion /= quaternion

Parameters:
pQuat quaternion
Returns:
quaternion

template<class Type>
Quaternion< Type > iso::math::Quaternion< Type >::operator * ( const Type &  pValue  )  const

quaternion * scalar

Parameters:
pValue value
Returns:
quaternion

template<class Type>
Quaternion< Type > iso::math::Quaternion< Type >::operator+ ( const Quaternion< Type > &  pQuat  )  const

quaternion + quaternion

Parameters:
pQuat quaternion
Returns:
quaternion

template<class Type>
Quaternion< Type > iso::math::Quaternion< Type >::operator- ( const Quaternion< Type > &  pQuat  )  const

quaternion - quaternion

Parameters:
pQuat quaternion
Returns:
quaternion

template<class Type>
Quaternion< Type > iso::math::Quaternion< Type >::operator * ( const Quaternion< Type > &  pQuat  )  const

quaternion * quaternion

Parameters:
pQuat quaternion
Returns:
quaternion

template<class Type>
Quaternion< Type > iso::math::Quaternion< Type >::operator/ ( Quaternion< Type > &  pQuat  )  const

quaternion / quaternion

Parameters:
pQuat quaternion
Returns:
quaternion

template<class Type>
Vector3< Type > iso::math::Quaternion< Type >::operator * ( const Vector3< Type > &  pVector  )  const

vector rotation

Parameters:
pVector vector3
Returns:
vector3

template<class Type>
Vector3< Type > iso::math::Quaternion< Type >::rotVec ( const Vector3< Type > &  pVector  )  const

vector rotation

Parameters:
pVector vector3
Returns:
vector3

template<class Type>
Quaternion< Type > iso::math::Quaternion< Type >::slerp ( const Quaternion< Type > &  pRot0,
const Quaternion< Type > &  pRot1,
Type  pT 
) [static]

Interpolates along the shortest path between the two rotation positions (from rot0 to rot1, 0<= t <= 1).

Parameters:
pRot0 first quaternion based orientiation
pRot1 second quaternion based orientiation
pT interpolation ( 0.0 - 1.0 )
Returns:
quaternion

template<class Type>
bool iso::math::Quaternion< Type >::operator== ( const Quaternion< Type > &  pQuat  )  const

quaternion == quaternion

Parameters:
pQuat quaternion
Returns:
bool

template<class Type>
bool iso::math::Quaternion< Type >::operator!= ( const Quaternion< Type > &  pQuat  )  const

quaternion != quaternion

Parameters:
pQuat quaternion
Returns:
bool

template<class Type>
Type iso::math::Quaternion< Type >::norm (  )  const

return norm

Returns:
norm
sqrt(w^2 + x^2 + y^2 + z^2);

template<class Type>
const Quaternion< Type > & iso::math::Quaternion< Type >::normalise (  ) 

normalise

Returns:
quaternion


Friends And Related Function Documentation

template<class Type>
std::ostream& operator<< ( std::ostream &  os,
const Quaternion< Type >  pQuat 
) [friend]


Member Data Documentation

template<class Type>
const Quaternion< Type > iso::math::Quaternion< Type >::IDENTITY [static]

template<class Type>
Type iso::math::Quaternion< Type >::w

template<class Type>
Type iso::math::Quaternion< Type >::x

template<class Type>
Type iso::math::Quaternion< Type >::y

template<class Type>
Type iso::math::Quaternion< Type >::z

template<class Type>
Type iso::math::Quaternion< Type >::c[4]

union { ... }


The documentation for this class was generated from the following file:
Generated on Fri Feb 25 14:04:07 2011 for iso_math by  doxygen 1.5.1