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

Collaboration diagram for quaternion:

Public Types

enum  { rank = 1 }
 
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 given scalar part, the vector part = vector::zero. More...
 
 quaternion (const vector &v)
 Construct a pure quaternion given the vector part, scalar part = 0. More...
 
 quaternion (const scalar angleX, const scalar angleY, const scalar angleZ)
 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 quaternion &q) const
 Return a vector of euler angles (rotations in radians about. 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 Attributes

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 61 of file quaternion.H.

Member Typedef Documentation

typedef scalar cmptType

Component type.

Definition at line 79 of file quaternion.H.

Member Enumeration Documentation

anonymous enum
Enumerator
rank 

Definition at line 83 of file quaternion.H.

Constructor & Destructor Documentation

quaternion ( )
inline

Construct null.

Definition at line 28 of file quaternionI.H.

quaternion ( const scalar  w,
const vector v 
)
inline

Construct given scalar and vector parts.

Definition at line 31 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 37 of file quaternionI.H.

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 44 of file quaternionI.H.

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

Here is the call graph for this function:

quaternion ( const scalar  w)
inlineexplicit

Construct given scalar part, the vector part = vector::zero.

Definition at line 63 of file quaternionI.H.

quaternion ( const vector v)
inlineexplicit

Construct a pure quaternion given the vector part, scalar part = 0.

Definition at line 69 of file quaternionI.H.

quaternion ( const scalar  angleX,
const scalar  angleY,
const scalar  angleZ 
)
inline

Construct a quaternion given the three Euler angles.

Definition at line 76 of file quaternionI.H.

quaternion ( const tensor rotationTensor)
inlineexplicit

Construct a quaternion from a rotation tensor.

Definition at line 88 of file quaternionI.H.

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

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::scalar w ( ) const
inline

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

Definition at line 166 of file quaternionI.H.

Referenced by quaternion::eulerAngles(), and quaternion::operator*=().

Here is the caller graph for this function:

const Foam::vector & v ( ) const
inline

Vector part of the quaternion ( = axis of rotation)

Definition at line 172 of file quaternionI.H.

Referenced by quaternion::eulerAngles(), and quaternion::operator*=().

Here is the caller graph for this function:

Foam::tensor R ( ) const
inline

The rotation tensor corresponding the quaternion.

Definition at line 235 of file quaternionI.H.

References Foam::sqr(), x, and y.

Referenced by triad::triad().

Here is the call graph for this function:

Here is the caller graph for this function:

Foam::vector eulerAngles ( const quaternion q) const
inline

Return a vector of euler angles (rotations in radians about.

the x, y and z axes.

Definition at line 258 of file quaternionI.H.

References Foam::asin(), Foam::atan2(), Foam::sqr(), quaternion::v(), and quaternion::w().

Here is the call graph for this function:

Foam::quaternion normalized ( ) const
inline

Definition at line 190 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 178 of file quaternionI.H.

Foam::vector & v ( )
inline

Vector part of the quaternion ( = axis of rotation)

Definition at line 184 of file quaternionI.H.

void normalize ( )
inline

Definition at line 196 of file quaternionI.H.

References Foam::mag().

Here is the call graph for this function:

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

Rotate the given vector.

Definition at line 208 of file quaternionI.H.

References Foam::conjugate().

Here is the call graph for this function:

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

Rotate the given vector anti-clockwise.

Definition at line 214 of file quaternionI.H.

References Foam::conjugate().

Here is the call graph for this function:

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

Rotate the given quaternion (and normalize)

Definition at line 220 of file quaternionI.H.

References 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 227 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 289 of file quaternionI.H.

void operator+= ( const quaternion q)
inline

Definition at line 295 of file quaternionI.H.

void operator-= ( const quaternion q)
inline

Definition at line 301 of file quaternionI.H.

void operator*= ( const quaternion q)
inline

Definition at line 307 of file quaternionI.H.

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

Here is the call graph for this function:

void operator/= ( const quaternion q)
inline

Definition at line 314 of file quaternionI.H.

References Foam::inv().

Here is the call graph for this function:

void operator= ( const scalar  s)
inline

Definition at line 320 of file quaternionI.H.

References s().

Here is the call graph for this function:

void operator= ( const vector v)
inline

Definition at line 326 of file quaternionI.H.

void operator*= ( const scalar  s)
inline

Definition at line 332 of file quaternionI.H.

References s().

Here is the call graph for this function:

void operator/= ( const scalar  s)
inline

Definition at line 338 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 char *const typeName = "quaternion"
static

Definition at line 91 of file quaternion.H.

const Foam::quaternion zero
static

Definition at line 93 of file quaternion.H.

const Foam::quaternion I
static

Definition at line 94 of file quaternion.H.


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