Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

mlib::Quat< QUAT, M, P, V, L > Class Template Reference
[MLIB]

A quaternion class.

The Quat class is designed to be the base class for more specific types of quaternions. Specifically, quaternions in different 3D coordinates systems. The QUAT template argument is the type of the derived quaternion class. This allows the Quat class to return new quaternions of the same type as the derived quaternion class. The M, P, V, and L template arguments are the types of the corresponding matrix, point, vector, and line (respectively) for the coordinate system of the derived quaternion class. More...

#include <quat.H>

Inheritance diagram for mlib::Quat< QUAT, M, P, V, L >:

Inheritance graph
[legend]
Collaboration diagram for mlib::Quat< QUAT, M, P, V, L >:

Collaboration graph
[legend]
List of all members.

Scalar multiplication

QUAT operator * (double s) const
QUAT operator/ (double s) const
QUAT operator * (double s, const QUAT &q)
QUAT operator- (const QUAT &q)

Public Member Functions

Constructors
 Quat ()
 Default constructor. Creates a quaternion with a unit scalar component and a default constructed vector component.
 Quat (const V &v, double w)
 Constructor that creates a quaternion with the scalar and vector components specified in the arguments.
 Quat (double w)
 Constructor that creates a quaternion with the specifeed scalar component and a default constructed vector component.
 Quat (const V &v)
 Constructor that creates a quaternion with the specified vector component and a zero scalar component.
 Quat (const M &t)
 Create quaternion from rotation matrix.
 Quat (const V &v1, const V &v2)
 Create quaternion to rotate from v1 to v2.
Accessor Functions
const V & v () const
 Accesses the vector component.
V & v ()
 Accesses the vector component.
double w () const
 Accesses the scalar component.
double & w ()
 Accesses the scalar component.
Quaternion Operations
double norm () const
QUAT conjugate () const
QUAT inverse () const
QUAT normalized () const
double dot (const QUAT &q) const
Overloaded Arithmetic Operators
QUAT operator+ (QUAT q) const
QUAT operator * (QUAT q) const
QUAT operator/ (QUAT q) const

Static Public Member Functions

Two Quaternion Operations
static QUAT slerp (const QUAT &q1, const QUAT &q2, double u)
 Spherical linear interpolation.

Protected Attributes

_v
double _w

Related Functions

(Note that these are not member functions.)

ostream & operator<< (ostream &os, const Quat< QUAT, M, P, V, L > &p)
 Stream insertion operator for quaternions.

Detailed Description

template<class QUAT, class M, class P, class V, class L>
class mlib::Quat< QUAT, M, P, V, L >

A quaternion class.

The Quat class is designed to be the base class for more specific types of quaternions. Specifically, quaternions in different 3D coordinates systems. The QUAT template argument is the type of the derived quaternion class. This allows the Quat class to return new quaternions of the same type as the derived quaternion class. The M, P, V, and L template arguments are the types of the corresponding matrix, point, vector, and line (respectively) for the coordinate system of the derived quaternion class.

Definition at line 29 of file quat.H.


Constructor & Destructor Documentation

template<class QUAT, class M, class P, class V, class L>
mlib::Quat< QUAT, M, P, V, L >::Quat  )  [inline]
 

Default constructor. Creates a quaternion with a unit scalar component and a default constructed vector component.

This most likely creates a zero vector as the vector component. So, the quaternion should be the identity quaternion.

Definition at line 46 of file quat.H.

template<class QUAT, class M, class P, class V, class L>
mlib::Quat< QUAT, M, P, V, L >::Quat const V &  v,
double  w
[inline]
 

Constructor that creates a quaternion with the scalar and vector components specified in the arguments.

Definition at line 50 of file quat.H.

template<class QUAT, class M, class P, class V, class L>
mlib::Quat< QUAT, M, P, V, L >::Quat double  w  )  [inline]
 

Constructor that creates a quaternion with the specifeed scalar component and a default constructed vector component.

Definition at line 54 of file quat.H.

template<class QUAT, class M, class P, class V, class L>
mlib::Quat< QUAT, M, P, V, L >::Quat const V &  v  )  [inline]
 

Constructor that creates a quaternion with the specified vector component and a zero scalar component.

Definition at line 58 of file quat.H.

template<class QUAT, class M, class P, class V, class L>
MLIB_INLINE mlib::Quat< QUAT, M, P, V, L >::Quat const M &  t  ) 
 

Create quaternion from rotation matrix.

Definition at line 17 of file quat.C.

References mlib::Quat< QUAT, M, P, V, L >::_v, mlib::Quat< QUAT, M, P, V, L >::_w, and caseMacro.

template<class QUAT, class M, class P, class V, class L>
MLIB_INLINE mlib::Quat< QUAT, M, P, V, L >::Quat const V &  v1,
const V &  v2
 

Create quaternion to rotate from v1 to v2.

Definition at line 59 of file quat.C.

References mlib::Quat< QUAT, M, P, V, L >::_v, mlib::Quat< QUAT, M, P, V, L >::_w, mlib::cross(), and mlib::Vec4::normalized().


Member Function Documentation

template<class QUAT, class M, class P, class V, class L>
QUAT mlib::Quat< QUAT, M, P, V, L >::conjugate  )  const [inline]
 

Definition at line 87 of file quat.H.

Referenced by mlib::Quat< Wquat, Wtransf, Wpt, Wvec, Wline >::inverse().

template<class QUAT, class M, class P, class V, class L>
double mlib::Quat< QUAT, M, P, V, L >::dot const QUAT &  q  )  const [inline]
 

Definition at line 93 of file quat.H.

template<class QUAT, class M, class P, class V, class L>
QUAT mlib::Quat< QUAT, M, P, V, L >::inverse  )  const [inline]
 

Definition at line 89 of file quat.H.

template<class QUAT, class M, class P, class V, class L>
double mlib::Quat< QUAT, M, P, V, L >::norm  )  const [inline]
 

Definition at line 85 of file quat.H.

Referenced by mlib::Quat< Wquat, Wtransf, Wpt, Wvec, Wline >::inverse(), and mlib::Quat< Wquat, Wtransf, Wpt, Wvec, Wline >::normalized().

template<class QUAT, class M, class P, class V, class L>
QUAT mlib::Quat< QUAT, M, P, V, L >::normalized  )  const [inline]
 

Definition at line 91 of file quat.H.

template<class QUAT, class M, class P, class V, class L>
QUAT mlib::Quat< QUAT, M, P, V, L >::operator * double  s  )  const [inline]
 

Definition at line 113 of file quat.H.

template<class QUAT, class M, class P, class V, class L>
QUAT mlib::Quat< QUAT, M, P, V, L >::operator * QUAT  q  )  const [inline]
 

Definition at line 102 of file quat.H.

Referenced by mlib::Quat< Wquat, Wtransf, Wpt, Wvec, Wline >::operator/().

template<class QUAT, class M, class P, class V, class L>
QUAT mlib::Quat< QUAT, M, P, V, L >::operator+ QUAT  q  )  const [inline]
 

Definition at line 100 of file quat.H.

template<class QUAT, class M, class P, class V, class L>
QUAT mlib::Quat< QUAT, M, P, V, L >::operator/ double  s  )  const [inline]
 

Definition at line 114 of file quat.H.

template<class QUAT, class M, class P, class V, class L>
QUAT mlib::Quat< QUAT, M, P, V, L >::operator/ QUAT  q  )  const [inline]
 

Definition at line 107 of file quat.H.

template<class QUAT, class M, class P, class V, class L>
MLIB_INLINE QUAT mlib::Quat< QUAT, M, P, V, L >::slerp const QUAT &  q1,
const QUAT &  q2,
double  u
[static]
 

Spherical linear interpolation.

Definition at line 80 of file quat.C.

References mlib::Acos(), and mlib::Quat< QUAT, M, P, V, L >::w().

template<class QUAT, class M, class P, class V, class L>
V& mlib::Quat< QUAT, M, P, V, L >::v  )  [inline]
 

Accesses the vector component.

Definition at line 74 of file quat.H.

template<class QUAT, class M, class P, class V, class L>
const V& mlib::Quat< QUAT, M, P, V, L >::v  )  const [inline]
 

Accesses the vector component.

Definition at line 72 of file quat.H.

Referenced by mlib::Quat< Wquat, Wtransf, Wpt, Wvec, Wline >::dot(), mlib::Quat< Wquat, Wtransf, Wpt, Wvec, Wline >::operator *(), mlib::Quat< Wquat, Wtransf, Wpt, Wvec, Wline >::operator+(), and operator>>().

template<class QUAT, class M, class P, class V, class L>
double& mlib::Quat< QUAT, M, P, V, L >::w  )  [inline]
 

Accesses the scalar component.

Definition at line 78 of file quat.H.

template<class QUAT, class M, class P, class V, class L>
double mlib::Quat< QUAT, M, P, V, L >::w  )  const [inline]
 

Accesses the scalar component.

Definition at line 76 of file quat.H.

Referenced by mlib::Quat< Wquat, Wtransf, Wpt, Wvec, Wline >::dot(), mlib::Quat< Wquat, Wtransf, Wpt, Wvec, Wline >::operator *(), mlib::Quat< Wquat, Wtransf, Wpt, Wvec, Wline >::operator+(), operator>>(), and mlib::Quat< QUAT, M, P, V, L >::slerp().


Friends And Related Function Documentation

template<class QUAT, class M, class P, class V, class L>
QUAT operator * double  s,
const QUAT &  q
[friend]
 

Definition at line 116 of file quat.H.

template<class QUAT, class M, class P, class V, class L>
QUAT operator- const QUAT &  q  )  [friend]
 

Definition at line 118 of file quat.H.

template<class QUAT, class M, class P, class V, class L>
ostream & operator<< ostream &  os,
const Quat< QUAT, M, P, V, L > &  p
[related]
 

Stream insertion operator for quaternions.

Definition at line 140 of file quat.H.


Member Data Documentation

template<class QUAT, class M, class P, class V, class L>
V mlib::Quat< QUAT, M, P, V, L >::_v [protected]
 

Definition at line 33 of file quat.H.

Referenced by mlib::Quat< Wquat, Wtransf, Wpt, Wvec, Wline >::conjugate(), mlib::Quat< Wquat, Wtransf, Wpt, Wvec, Wline >::norm(), mlib::Quat< QUAT, M, P, V, L >::Quat(), and mlib::Quat< Wquat, Wtransf, Wpt, Wvec, Wline >::v().

template<class QUAT, class M, class P, class V, class L>
double mlib::Quat< QUAT, M, P, V, L >::_w [protected]
 

Definition at line 34 of file quat.H.

Referenced by mlib::Quat< Wquat, Wtransf, Wpt, Wvec, Wline >::conjugate(), mlib::Quat< Wquat, Wtransf, Wpt, Wvec, Wline >::norm(), mlib::Quat< QUAT, M, P, V, L >::Quat(), and mlib::Quat< Wquat, Wtransf, Wpt, Wvec, Wline >::w().


The documentation for this class was generated from the following files:
Generated on Mon Sep 18 11:48:25 2006 for jot by  doxygen 1.4.4