Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | Friends | List of all members
quaternion Class Reference

Quaternion class used to perform rotations in 3D space. More...

Collaboration diagram for quaternion:
Collaboration graph
[legend]

Public Types

enum  rotationSequence {
  ZYX, ZYZ, ZXY, ZXZ,
  YXZ, YXY, YZX, YZY,
  XYZ, XYX, XZY, XZX
}
 Euler-angle rotation sequence. More...
 
typedef scalar cmptType
 Component type. More...
 

Public Member Functions

 quaternion ()
 Construct null. More...
 
 quaternion (const scalar w, const vector &v)
 Construct given scalar and vector parts. More...
 
 quaternion (const vector &d, const scalar theta)
 Construct a rotation quaternion given the direction d. More...
 
 quaternion (const vector &d, const scalar cosTheta, const bool normalized)
 Construct a rotation quaternion given the direction d. More...
 
 quaternion (const scalar w)
 Construct a real from the given scalar part, the vector part = zero. More...
 
 quaternion (const vector &v)
 Construct a pure imaginary quaternion given the vector part,. More...
 
 quaternion (const rotationSequence rs, const vector &angles)
 Construct a quaternion given the three Euler angles. More...
 
 quaternion (const tensor &rotationTensor)
 Construct a quaternion from a rotation tensor. More...
 
 quaternion (Istream &)
 Construct from Istream. More...
 
scalar w () const
 Scalar part of the quaternion ( = cos(theta/2) for rotation) More...
 
const vectorv () const
 Vector part of the quaternion ( = axis of rotation) More...
 
tensor R () const
 The rotation tensor corresponding the quaternion. More...
 
vector eulerAngles (const rotationSequence rs) const
 Return a vector of euler angles corresponding to the. More...
 
quaternion normalized () const
 
scalar & w ()
 Scalar part of the quaternion ( = cos(theta/2) for rotation) More...
 
vectorv ()
 Vector part of the quaternion ( = axis of rotation) More...
 
void normalize ()
 
vector transform (const vector &v) const
 Rotate the given vector. More...
 
vector invTransform (const vector &v) const
 Rotate the given vector anti-clockwise. More...
 
quaternion transform (const quaternion &q) const
 Rotate the given quaternion (and normalize) More...
 
quaternion invTransform (const quaternion &q) const
 Rotate the given quaternion anti-clockwise (and normalize) More...
 
void operator= (const quaternion &)
 
void operator+= (const quaternion &)
 
void operator-= (const quaternion &)
 
void operator*= (const quaternion &)
 
void operator/= (const quaternion &)
 
void operator= (const scalar)
 
void operator= (const vector &)
 
void operator*= (const scalar)
 
void operator/= (const scalar)
 

Static Public Member Functions

static quaternion unit (const vector &v)
 Return the unit quaternion (versor) from the given vector. More...
 

Static Public Attributes

static const direction rank = 1
 Rank of quaternion is 1. More...
 
static const char *const typeName = "quaternion"
 
static const quaternion zero
 
static const quaternion I
 

Friends

Istreamoperator>> (Istream &is, quaternion &)
 
Ostreamoperator<< (Ostream &os, const quaternion &C)
 

Detailed Description

Quaternion class used to perform rotations in 3D space.

Source files

Definition at line 60 of file quaternion.H.

Member Typedef Documentation

typedef scalar cmptType

Component type.

Definition at line 98 of file quaternion.H.

Member Enumeration Documentation

Euler-angle rotation sequence.

Enumerator
ZYX 
ZYZ 
ZXY 
ZXZ 
YXZ 
YXY 
YZX 
YZY 
XYZ 
XYX 
XZY 
XZX 

Definition at line 101 of file quaternion.H.

Constructor & Destructor Documentation

quaternion ( )
inline

Construct null.

Definition at line 28 of file quaternionI.H.

Referenced by Foam::conjugate(), Foam::exp(), Foam::inv(), quaternion::normalize(), Foam::operator*(), Foam::operator+(), Foam::operator-(), Foam::operator/(), quaternion::quaternion(), and quaternion::unit().

Here is the caller graph for this function:

quaternion ( const scalar  w,
const vector v 
)
inline

Construct given scalar and vector parts.

Definition at line 32 of file quaternionI.H.

quaternion ( const vector d,
const scalar  theta 
)
inline

Construct a rotation quaternion given the direction d.

and angle theta

Definition at line 39 of file quaternionI.H.

References quaternion::quaternion().

Here is the call graph for this function:

quaternion ( const vector d,
const scalar  cosTheta,
const bool  normalized 
)
inline

Construct a rotation quaternion given the direction d.

and cosine angle cosTheta and a if d is normalized

Definition at line 47 of file quaternionI.H.

References Foam::mag(), and Foam::sqrt().

Here is the call graph for this function:

quaternion ( const scalar  w)
inlineexplicit

Construct a real from the given scalar part, the vector part = zero.

Definition at line 67 of file quaternionI.H.

quaternion ( const vector v)
inlineexplicit

Construct a pure imaginary quaternion given the vector part,.

the scalar part = 0

Definition at line 74 of file quaternionI.H.

quaternion ( const rotationSequence  rs,
const vector angles 
)
inline
quaternion ( const tensor rotationTensor)
inlineexplicit

Construct a quaternion from a rotation tensor.

Definition at line 176 of file quaternionI.H.

References s(), Foam::sqrt(), Tensor< Cmpt >::xx(), Tensor< Cmpt >::xy(), Tensor< Cmpt >::xz(), Tensor< Cmpt >::yx(), Tensor< Cmpt >::yy(), Tensor< Cmpt >::yz(), Tensor< Cmpt >::zx(), Tensor< Cmpt >::zy(), and Tensor< Cmpt >::zz().

Here is the call graph for this function:

quaternion ( Istream is)

Construct from Istream.

Definition at line 38 of file quaternion.C.

Member Function Documentation

Foam::quaternion unit ( const vector v)
inlinestatic

Return the unit quaternion (versor) from the given vector.

(w = sqrt(1 - |sqr(v)|))

Definition at line 81 of file quaternionI.H.

References Foam::magSqr(), quaternion::quaternion(), and Foam::sqrt().

Referenced by joint::unitQuaternion().

Here is the call graph for this function:

Here is the caller graph for this function:

Foam::scalar w ( ) const
inline
const Foam::vector & v ( ) const
inline
Foam::tensor R ( ) const
inline

The rotation tensor corresponding the quaternion.

Definition at line 323 of file quaternionI.H.

References Foam::acos(), Foam::asin(), Foam::atan2(), Foam::constant::physicoChemical::c2, quaternion::eulerAngles(), Foam::sqr(), quaternion::v(), quaternion::w(), x, Vector< Cmpt >::x(), y, Vector< Cmpt >::y(), and Vector< Cmpt >::z().

Referenced by Foam::transform(), Foam::transformPoints(), and triad::triad().

Here is the call graph for this function:

Here is the caller graph for this function:

Foam::vector eulerAngles ( const rotationSequence  rs) const
inline

Return a vector of euler angles corresponding to the.

specified rotation sequence

Definition at line 373 of file quaternionI.H.

References Foam::abort(), Foam::FatalError, FatalErrorInFunction, Foam::sqr(), quaternion::v(), quaternion::w(), x, quaternion::XYX, quaternion::XYZ, quaternion::XZX, quaternion::XZY, y, quaternion::YXY, quaternion::YXZ, quaternion::YZX, quaternion::YZY, Foam::Zero, quaternion::ZXY, quaternion::ZXZ, quaternion::ZYX, and quaternion::ZYZ.

Referenced by quaternion::R().

Here is the call graph for this function:

Here is the caller graph for this function:

Foam::quaternion normalized ( ) const
inline

Definition at line 278 of file quaternionI.H.

References Foam::mag().

Here is the call graph for this function:

Foam::scalar & w ( )
inline

Scalar part of the quaternion ( = cos(theta/2) for rotation)

Definition at line 266 of file quaternionI.H.

Foam::vector & v ( )
inline

Vector part of the quaternion ( = axis of rotation)

Definition at line 272 of file quaternionI.H.

void normalize ( )
inline

Definition at line 284 of file quaternionI.H.

References Foam::mag(), quaternion::operator/=(), quaternion::quaternion(), quaternion::v(), and quaternion::w().

Referenced by Foam::average().

Here is the call graph for this function:

Here is the caller graph for this function:

Foam::vector transform ( const vector v) const
inline

Rotate the given vector.

Definition at line 296 of file quaternionI.H.

References Foam::conjugate().

Referenced by Foam::inv(), Foam::operator*(), Foam::operator/(), septernion::operator/=(), and septernion::transformPoint().

Here is the call graph for this function:

Here is the caller graph for this function:

Foam::vector invTransform ( const vector v) const
inline

Rotate the given vector anti-clockwise.

Definition at line 302 of file quaternionI.H.

References Foam::conjugate(), and quaternion::v().

Referenced by septernion::invTransformPoint(), Foam::operator*(), septernion::operator*=(), and quaternion::transform().

Here is the call graph for this function:

Here is the caller graph for this function:

Foam::quaternion transform ( const quaternion q) const
inline

Rotate the given quaternion (and normalize)

Definition at line 308 of file quaternionI.H.

References quaternion::invTransform(), and Foam::normalize().

Here is the call graph for this function:

Foam::quaternion invTransform ( const quaternion q) const
inline

Rotate the given quaternion anti-clockwise (and normalize)

Definition at line 315 of file quaternionI.H.

References Foam::conjugate(), and Foam::normalize().

Here is the call graph for this function:

void operator= ( const quaternion q)
inline

Definition at line 526 of file quaternionI.H.

Referenced by quaternion::quaternion().

Here is the caller graph for this function:

void operator+= ( const quaternion q)
inline

Definition at line 532 of file quaternionI.H.

void operator-= ( const quaternion q)
inline

Definition at line 538 of file quaternionI.H.

void operator*= ( const quaternion q)
inline

Definition at line 544 of file quaternionI.H.

References quaternion::v(), and quaternion::w().

Referenced by quaternion::operator/=(), and quaternion::quaternion().

Here is the call graph for this function:

Here is the caller graph for this function:

void operator/= ( const quaternion q)
inline

Definition at line 551 of file quaternionI.H.

References Foam::inv(), and quaternion::operator*=().

Referenced by quaternion::normalize().

Here is the call graph for this function:

Here is the caller graph for this function:

void operator= ( const scalar  s)
inline

Definition at line 557 of file quaternionI.H.

References s().

Here is the call graph for this function:

void operator= ( const vector v)
inline

Definition at line 563 of file quaternionI.H.

References quaternion::v().

Here is the call graph for this function:

void operator*= ( const scalar  s)
inline

Definition at line 569 of file quaternionI.H.

References s().

Here is the call graph for this function:

void operator/= ( const scalar  s)
inline

Definition at line 575 of file quaternionI.H.

References s().

Here is the call graph for this function:

Friends And Related Function Documentation

Istream& operator>> ( Istream is,
quaternion  
)
friend
Ostream& operator<< ( Ostream os,
const quaternion C 
)
friend

Member Data Documentation

const direction rank = 1
static

Rank of quaternion is 1.

Definition at line 110 of file quaternion.H.

const char *const typeName = "quaternion"
static

Definition at line 115 of file quaternion.H.

const Foam::quaternion zero
static

Definition at line 117 of file quaternion.H.

const Foam::quaternion I
static

Definition at line 118 of file quaternion.H.

Referenced by septernion::operator=().


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