Documentation


animal::Quaternion< RealT, TraitsT > Class Template Reference

#include <quaternion.h>

List of all members.


Detailed Description

template<class RealT = double, class TraitsT = Quaternion_Traits<RealT>>
class animal::Quaternion< RealT, TraitsT >

Unit quaternion used to model a rotation in 3D.

The Quaternion is modeled using (w, x, y, z) i.e. cos(t/2), ax.sin(t/2), ay.sin(t/2), az.sin(t/2) where {ax,ay,az} is a rotation axis with norm=1 and t is the Quaternion angle

Author:
François Faure, iMAGIS-GRAVIR, April 2000, animal/quaternion.h
See also:
Quaternion_Traits modif Frank Perbet 2002/01/23 ( changement des indices pour v )
Examples:

boundingBox3D_test.cpp, and quaternion_test.cpp.

Definition at line 37 of file quaternion.h.

Constructors/Destructor

Vector type

 Quaternion ()
 Default constructor: does nothing.

 Quaternion (const Real w, const Real x, const Real y, const Real z)
 Components w, x, y, z. Be careful, the first parameter is the angle!

 Quaternion (const Vec3 &axis, const Real angle)
 Axis and angle of rotation.

 Quaternion (const Real angle, const Vec3 &axis)
 Axis and angle of rotation.

 Quaternion (const Quaternion &)
 Copy.

 ~Quaternion ()
 Destructor: does nothing.

template<class Vect> Quaternion eulerIncrement (const Vect &, const Real dt)
 Time integration of a rotation velocity.

Quaternion eulerIncrement (const Real, const Real, const Real, const Real)
 Time integration of a rotation velocity.

template<class Vect> Quaternion elementaryRotation (const Vect &)
 Time integration of a rotation velocity during a unit time step (dt=1).

Quaternion elementaryRotation (const Real, const Real, const Real)
 Time integration of a rotation velocity.


Public Types

Typedefs
typedef TraitsT Traits
 Type used for class customization.

typedef RealT Real
 Floating point type.


Public Member Functions

Get
void getAxisAngle (Real &x, Real &y, Real &z, Real &angle) const
 Get axis, angle -biased!- for display only.

void getAxisAngle (Vec3 &v, Real &a) const
 Get axis, angle -biased!- for display only.

const Realw () const
 Get w component in w, x, y, z.

const Realx () const
 Get x component in w, x, y, z.

const Realy () const
 Get y component in w, x, y, z.

const Realz () const
 Get z component in w, x, y, z.

Set
void setAxisAngle (const Real x, const Real y, const Real z, const Real angle)
void setAxisAngle (const Vec3 &axis, const Real angle)
Quaternionsetwxyz (const Real w, const Real x, const Real y, const Real z)
 Set components w, x, y, z.

Euler angles (not extensively tested!)
QuaternionsetEulerXYZ (const Real x, const Real y, const Real z)
QuaternionsetEulerXYX (const Real x, const Real y, const Real xx)
QuaternionsetEulerXZY (const Real x, const Real z, const Real y)
QuaternionsetEulerXZX (const Real x, const Real z, const Real xx)
QuaternionsetEulerYZX (const Real y, const Real z, const Real x)
QuaternionsetEulerYZY (const Real y, const Real z, const Real yy)
QuaternionsetEulerYXY (const Real y, const Real x, const Real yy)
QuaternionsetEulerYXZ (const Real y, const Real x, const Real z)
QuaternionsetEulerZXY (const Real z, const Real x, const Real y)
QuaternionsetEulerZXZ (const Real z, const Real x, const Real zz)
QuaternionsetEulerZYX (const Real z, const Real y, const Real x)
QuaternionsetEulerZYZ (const Real z, const Real y, const Real zz)
Operations on Quaternions (composition of rotations)
Quaternionoperator= (const Quaternion &)
 Assignement operator.

Quaternionoperator *= (const Quaternion &)
 In-place product.

Quaternionoperator/= (const Quaternion &)
 In-place product with the inverse of a quaternion.

Quaternion operator * (const Quaternion &) const
 Product with a quaternion.

Quaternion operator/ (const Quaternion &) const
 Product with the inverse of a quaternion.

Quaternion inverse () const
 Inverse rotation.

Quaternion operator * (const Real u) const
 Interpolation.

Operations on vectors
Vec3 operator * (const Vec3 &) const
 Apply rotation to a vector.

Vec3 operator/ (const Vec3 &) const
 Apply inverse rotation to a vector.

Norm
Real norm () const
 Norm.

Quaternionnormalize ()
 Normalize.


Static Public Member Functions

Constants
const Quaternion identity ()
 Identity (rotation with null angle).


Private Attributes

Real v [4]
 Value of the quaternion.


Friends

Input/Output
template<class R, class T> std::ostream & operator<< (std::ostream &, const Quaternion< R, T > &)
 Text output: axis angle.

template<class R, class T> std::istream & operator>> (std::istream &, Quaternion< R, T > &)
 Text input: axis angle.


Member Typedef Documentation

template<class RealT = double, class TraitsT = Quaternion_Traits<RealT>>
typedef RealT animal::Quaternion< RealT, TraitsT >::Real
 

Floating point type.

Definition at line 49 of file quaternion.h.

template<class RealT = double, class TraitsT = Quaternion_Traits<RealT>>
typedef TraitsT animal::Quaternion< RealT, TraitsT >::Traits
 

Type used for class customization.

Definition at line 46 of file quaternion.h.


Constructor & Destructor Documentation

template<class Real, class Traits>
animal::Quaternion< Real, Traits >::Quaternion  )  [inline]
 

Default constructor: does nothing.

Definition at line 423 of file quaternion.h.

Referenced by animal::Quaternion< RealT, TraitsT >::identity(), and animal::Quaternion< RealT, TraitsT >::inverse().

template<class Real, class Traits>
animal::Quaternion< Real, Traits >::Quaternion const Real  w,
const Real  x,
const Real  y,
const Real  z
[inline]
 

Components w, x, y, z. Be careful, the first parameter is the angle!

Definition at line 429 of file quaternion.h.

References animal::Quaternion< RealT, TraitsT >::v.

template<class Real, class Traits>
animal::Quaternion< Real, Traits >::Quaternion const Vec3 axis,
const Real  angle
[inline]
 

Axis and angle of rotation.

Definition at line 437 of file quaternion.h.

References animal::Quaternion< RealT, TraitsT >::setAxisAngle().

template<class Real, class Traits>
animal::Quaternion< Real, Traits >::Quaternion const Real  angle,
const Vec3 axis
[inline]
 

Axis and angle of rotation.

Definition at line 445 of file quaternion.h.

References animal::Quaternion< RealT, TraitsT >::setAxisAngle().

template<class Real, class Traits>
animal::Quaternion< Real, Traits >::Quaternion const Quaternion< RealT, TraitsT > &   )  [inline]
 

Copy.

Definition at line 453 of file quaternion.h.

References animal::Quaternion< RealT, TraitsT >::v.

template<class Real, class Traits>
animal::Quaternion< Real, Traits >::~Quaternion  )  [inline]
 

Destructor: does nothing.

Definition at line 461 of file quaternion.h.


Member Function Documentation

template<class Real, class Traits>
Quaternion< Real, Traits > animal::Quaternion< Real, Traits >::elementaryRotation const  Real,
const  Real,
const  Real
[inline, static]
 

Time integration of a rotation velocity.

Definition at line 1197 of file quaternion.h.

References animal::Quaternion< RealT, TraitsT >::setAxisAngle().

template<class Real, class Traits>
template<class Vect>
Quaternion< Real, Traits > animal::Quaternion< Real, Traits >::elementaryRotation const Vect &   )  [inline, static]
 

Time integration of a rotation velocity during a unit time step (dt=1).

Definition at line 1186 of file quaternion.h.

template<class Real, class Traits>
Quaternion< Real, Traits > animal::Quaternion< Real, Traits >::eulerIncrement const  Real,
const  Real,
const  Real,
const  Real
[inline, static]
 

Time integration of a rotation velocity.

Definition at line 1161 of file quaternion.h.

References animal::Quaternion< RealT, TraitsT >::setAxisAngle().

template<class Real, class Traits>
template<class Vect>
Quaternion< Real, Traits > animal::Quaternion< Real, Traits >::eulerIncrement const Vect &  ,
const Real  dt
[inline, static]
 

Time integration of a rotation velocity.

Definition at line 1148 of file quaternion.h.

template<class Real, class Traits>
void animal::Quaternion< Real, Traits >::getAxisAngle Vec3 v,
Real a
const [inline]
 

Get axis, angle -biased!- for display only.

Definition at line 512 of file quaternion.h.

References animal::Quaternion< RealT, TraitsT >::v, and animal::Vec3.

template<class Real, class Traits>
void animal::Quaternion< Real, Traits >::getAxisAngle Real x,
Real y,
Real z,
Real angle
const [inline]
 

Get axis, angle -biased!- for display only.

Definition at line 471 of file quaternion.h.

References animal::Quaternion< RealT, TraitsT >::v.

template<class Real, class Traits>
const Quaternion< Real, Traits > animal::Quaternion< Real, Traits >::identity  )  [inline, static]
 

Identity (rotation with null angle).

Definition at line 974 of file quaternion.h.

References animal::Quaternion< RealT, TraitsT >::Quaternion().

template<class Real, class Traits>
Quaternion< Real, Traits > animal::Quaternion< Real, Traits >::inverse  )  const [inline]
 

Inverse rotation.

Definition at line 836 of file quaternion.h.

References animal::Quaternion< RealT, TraitsT >::Quaternion(), and animal::Quaternion< RealT, TraitsT >::v.

template<class Real, class Traits>
Real animal::Quaternion< Real, Traits >::norm  )  const [inline]
 

Norm.

Definition at line 923 of file quaternion.h.

References animal::Quaternion< RealT, TraitsT >::v.

template<class Real, class Traits>
Quaternion< Real, Traits > & animal::Quaternion< Real, Traits >::normalize  )  [inline]
 

Normalize.

Definition at line 930 of file quaternion.h.

References animal::Quaternion< RealT, TraitsT >::v.

template<class Real, class Traits>
Vec3 animal::Quaternion< Real, Traits >::operator * const Vec3  )  const
 

Apply rotation to a vector.

Definition at line 863 of file quaternion.h.

References animal::Quaternion< RealT, TraitsT >::v.

template<class Real, class Traits>
Quaternion< Real, Traits > animal::Quaternion< Real, Traits >::operator * const Real  u  )  const [inline]
 

Interpolation.

Definition at line 845 of file quaternion.h.

template<class Real, class Traits>
Quaternion< Real, Traits > animal::Quaternion< Real, Traits >::operator * const Quaternion< RealT, TraitsT > &   )  const [inline]
 

Product with a quaternion.

Definition at line 809 of file quaternion.h.

References animal::Quaternion< RealT, TraitsT >::v.

template<class Real, class Traits>
Quaternion< Real, Traits > & animal::Quaternion< Real, Traits >::operator *= const Quaternion< RealT, TraitsT > &   )  [inline]
 

In-place product.

Definition at line 781 of file quaternion.h.

References animal::Quaternion< RealT, TraitsT >::v, and animal::Quaternion< RealT, TraitsT >::w().

template<class Real, class Traits>
Vec3 animal::Quaternion< Real, Traits >::operator/ const Vec3  )  const
 

Apply inverse rotation to a vector.

Definition at line 892 of file quaternion.h.

References animal::Quaternion< RealT, TraitsT >::v.

template<class Real, class Traits>
Quaternion< Real, Traits > animal::Quaternion< Real, Traits >::operator/ const Quaternion< RealT, TraitsT > &   )  const [inline]
 

Product with the inverse of a quaternion.

Definition at line 823 of file quaternion.h.

References animal::Quaternion< RealT, TraitsT >::v.

template<class Real, class Traits>
Quaternion< Real, Traits > & animal::Quaternion< Real, Traits >::operator/= const Quaternion< RealT, TraitsT > &   )  [inline]
 

In-place product with the inverse of a quaternion.

Definition at line 795 of file quaternion.h.

References animal::Quaternion< RealT, TraitsT >::v, and animal::Quaternion< RealT, TraitsT >::w().

template<class Real, class Traits>
Quaternion< Real, Traits > & animal::Quaternion< Real, Traits >::operator= const Quaternion< RealT, TraitsT > &   )  [inline]
 

Assignement operator.

Definition at line 768 of file quaternion.h.

References animal::Quaternion< RealT, TraitsT >::v.

template<class Real, class Traits>
void animal::Quaternion< Real, Traits >::setAxisAngle const Vec3 axis,
const Real  angle
[inline]
 

Set axis, angle. Axis is represented by a vector. Axis needs not be normalized.

Definition at line 579 of file quaternion.h.

References animal::Quaternion< RealT, TraitsT >::v.

template<class Real, class Traits>
void animal::Quaternion< Real, Traits >::setAxisAngle const Real  x,
const Real  y,
const Real  z,
const Real  angle
[inline]
 

Set axis, angle. Axis represented by 3 Real. Axis needs not be normalized.

Definition at line 595 of file quaternion.h.

References animal::Quaternion< RealT, TraitsT >::v.

Referenced by animal::Quaternion< RealT, TraitsT >::elementaryRotation(), animal::Quaternion< RealT, TraitsT >::eulerIncrement(), animal::operator>>(), animal::Quaternion< RealT, TraitsT >::Quaternion(), animal::Quaternion< RealT, TraitsT >::setEulerXYX(), animal::Quaternion< RealT, TraitsT >::setEulerXYZ(), animal::Quaternion< RealT, TraitsT >::setEulerXZX(), animal::Quaternion< RealT, TraitsT >::setEulerXZY(), animal::Quaternion< RealT, TraitsT >::setEulerYXY(), animal::Quaternion< RealT, TraitsT >::setEulerYXZ(), animal::Quaternion< RealT, TraitsT >::setEulerYZX(), animal::Quaternion< RealT, TraitsT >::setEulerYZY(), animal::Quaternion< RealT, TraitsT >::setEulerZXY(), animal::Quaternion< RealT, TraitsT >::setEulerZXZ(), animal::Quaternion< RealT, TraitsT >::setEulerZYX(), and animal::Quaternion< RealT, TraitsT >::setEulerZYZ().

template<class Real, class Traits>
Quaternion< Real, Traits > & animal::Quaternion< Real, Traits >::setEulerXYX const Real  x,
const Real  y,
const Real  xx
[inline]
 

Definition at line 632 of file quaternion.h.

References animal::Quaternion< RealT, TraitsT >::setAxisAngle().

template<class Real, class Traits>
Quaternion< Real, Traits > & animal::Quaternion< Real, Traits >::setEulerXYZ const Real  x,
const Real  y,
const Real  z
[inline]
 

Examples:
quaternion_test.cpp.

Definition at line 620 of file quaternion.h.

References animal::Quaternion< RealT, TraitsT >::setAxisAngle().

template<class Real, class Traits>
Quaternion< Real, Traits > & animal::Quaternion< Real, Traits >::setEulerXZX const Real  x,
const Real  z,
const Real  xx
[inline]
 

Definition at line 656 of file quaternion.h.

References animal::Quaternion< RealT, TraitsT >::setAxisAngle().

template<class Real, class Traits>
Quaternion< Real, Traits > & animal::Quaternion< Real, Traits >::setEulerXZY const Real  x,
const Real  z,
const Real  y
[inline]
 

Definition at line 644 of file quaternion.h.

References animal::Quaternion< RealT, TraitsT >::setAxisAngle().

template<class Real, class Traits>
Quaternion< Real, Traits > & animal::Quaternion< Real, Traits >::setEulerYXY const Real  y,
const Real  x,
const Real  yy
[inline]
 

Definition at line 692 of file quaternion.h.

References animal::Quaternion< RealT, TraitsT >::setAxisAngle().

template<class Real, class Traits>
Quaternion< Real, Traits > & animal::Quaternion< Real, Traits >::setEulerYXZ const Real  y,
const Real  x,
const Real  z
[inline]
 

Definition at line 704 of file quaternion.h.

References animal::Quaternion< RealT, TraitsT >::setAxisAngle().

template<class Real, class Traits>
Quaternion< Real, Traits > & animal::Quaternion< Real, Traits >::setEulerYZX const Real  y,
const Real  z,
const Real  x
[inline]
 

Definition at line 668 of file quaternion.h.

References animal::Quaternion< RealT, TraitsT >::setAxisAngle().

template<class Real, class Traits>
Quaternion< Real, Traits > & animal::Quaternion< Real, Traits >::setEulerYZY const Real  y,
const Real  z,
const Real  yy
[inline]
 

Definition at line 680 of file quaternion.h.

References animal::Quaternion< RealT, TraitsT >::setAxisAngle().

template<class Real, class Traits>
Quaternion< Real, Traits > & animal::Quaternion< Real, Traits >::setEulerZXY const Real  z,
const Real  x,
const Real  y
[inline]
 

Definition at line 716 of file quaternion.h.

References animal::Quaternion< RealT, TraitsT >::setAxisAngle().

template<class Real, class Traits>
Quaternion< Real, Traits > & animal::Quaternion< Real, Traits >::setEulerZXZ const Real  z,
const Real  x,
const Real  zz
[inline]
 

Definition at line 728 of file quaternion.h.

References animal::Quaternion< RealT, TraitsT >::setAxisAngle().

template<class Real, class Traits>
Quaternion< Real, Traits > & animal::Quaternion< Real, Traits >::setEulerZYX const Real  z,
const Real  y,
const Real  x
[inline]
 

Definition at line 740 of file quaternion.h.

References animal::Quaternion< RealT, TraitsT >::setAxisAngle().

template<class Real, class Traits>
Quaternion< Real, Traits > & animal::Quaternion< Real, Traits >::setEulerZYZ const Real  z,
const Real  y,
const Real  zz
[inline]
 

Definition at line 752 of file quaternion.h.

References animal::Quaternion< RealT, TraitsT >::setAxisAngle().

template<class Real, class Traits>
Quaternion< Real, Traits > & animal::Quaternion< Real, Traits >::setwxyz const Real  w,
const Real  x,
const Real  y,
const Real  z
[inline]
 

Set components w, x, y, z.

Definition at line 611 of file quaternion.h.

References animal::Quaternion< RealT, TraitsT >::v.

template<class Real, class Traits>
const Real & animal::Quaternion< Real, Traits >::w  )  const [inline]
 

Get w component in w, x, y, z.

Definition at line 546 of file quaternion.h.

References animal::Quaternion< RealT, TraitsT >::v.

Referenced by animal::Quaternion< RealT, TraitsT >::operator *=(), animal::Quaternion< RealT, TraitsT >::operator/=(), animal::writeOpenGLRotMatrix(), and animal::writeRotMatrix().

template<class Real, class Traits>
const Real & animal::Quaternion< Real, Traits >::x  )  const [inline]
 

Get x component in w, x, y, z.

Definition at line 553 of file quaternion.h.

References animal::Quaternion< RealT, TraitsT >::v.

Referenced by animal::writeOpenGLRotMatrix(), and animal::writeRotMatrix().

template<class Real, class Traits>
const Real & animal::Quaternion< Real, Traits >::y  )  const [inline]
 

Get y component in w, x, y, z.

Definition at line 560 of file quaternion.h.

References animal::Quaternion< RealT, TraitsT >::v.

Referenced by animal::writeOpenGLRotMatrix(), and animal::writeRotMatrix().

template<class Real, class Traits>
const Real & animal::Quaternion< Real, Traits >::z  )  const [inline]
 

Get z component in w, x, y, z.

Definition at line 567 of file quaternion.h.

References animal::Quaternion< RealT, TraitsT >::v.

Referenced by animal::writeOpenGLRotMatrix(), and animal::writeRotMatrix().


Friends And Related Function Documentation

template<class RealT = double, class TraitsT = Quaternion_Traits<RealT>>
template<class R, class T>
std::ostream& operator<< std::ostream &  ,
const Quaternion< R, T > & 
[friend]
 

Text output: axis angle.

template<class RealT = double, class TraitsT = Quaternion_Traits<RealT>>
template<class R, class T>
std::istream& operator>> std::istream &  ,
Quaternion< R, T > & 
[friend]
 

Text input: axis angle.


Member Data Documentation

template<class RealT = double, class TraitsT = Quaternion_Traits<RealT>>
Real animal::Quaternion< RealT, TraitsT >::v[4] [private]
 

Value of the quaternion.

Definition at line 264 of file quaternion.h.

Referenced by animal::Quaternion< RealT, TraitsT >::getAxisAngle(), animal::Quaternion< RealT, TraitsT >::inverse(), animal::Quaternion< RealT, TraitsT >::norm(), animal::Quaternion< RealT, TraitsT >::normalize(), animal::Quaternion< RealT, TraitsT >::operator *(), animal::Quaternion< RealT, TraitsT >::operator *=(), animal::Quaternion< RealT, TraitsT >::operator/(), animal::Quaternion< RealT, TraitsT >::operator/=(), animal::Quaternion< RealT, TraitsT >::operator=(), animal::Quaternion< RealT, TraitsT >::Quaternion(), animal::Quaternion< RealT, TraitsT >::setAxisAngle(), animal::Quaternion< RealT, TraitsT >::setwxyz(), animal::Quaternion< RealT, TraitsT >::w(), animal::Quaternion< RealT, TraitsT >::x(), animal::Quaternion< RealT, TraitsT >::y(), and animal::Quaternion< RealT, TraitsT >::z().


The documentation for this class was generated from the following file:
Generated on Thu Dec 23 13:52:30 2004 by doxygen 1.3.6