Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | 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  eulerOrder : unsigned char {
  XZX, XYX, YXY, YZY,
  ZYZ, ZXZ, XZY, XYZ,
  YXZ, YZX, ZYX, ZXY
}
 
typedef scalar cmptType
 
typedef scalar magType
 

Public Member Functions

 quaternion ()=default
 
 quaternion (const quaternion &)=default
 
quaternionoperator= (const quaternion &)=default
 
 quaternion (const Foam::zero)
 
 quaternion (const scalar w, const vector &v)
 
 quaternion (const vector &d, const scalar theta)
 
 quaternion (const vector &d, const scalar cosTheta, const bool normalized)
 
 quaternion (const scalar w)
 
 quaternion (const vector &v)
 
 quaternion (const eulerOrder order, const vector &angles)
 
 quaternion (const tensor &rotationTensor)
 
 quaternion (Istream &is)
 
scalar w () const
 
const vectorv () const
 
tensor R () const
 
vector eulerAngles (const eulerOrder order) const
 
quaternion normalized () const
 
scalar & w ()
 
vectorv ()
 
void normalize ()
 
vector transform (const vector &v) const
 
vector invTransform (const vector &v) const
 
quaternion transform (const quaternion &q) const
 
quaternion invTransform (const quaternion &q) const
 
void operator+= (const quaternion &q)
 
void operator-= (const quaternion &q)
 
void operator*= (const quaternion &q)
 
void operator/= (const quaternion &q)
 
void operator= (const scalar s)
 
void operator= (const vector &v)
 
void operator*= (const scalar s)
 
void operator/= (const scalar s)
 

Static Public Member Functions

static quaternion unit (const vector &v)
 

Static Public Attributes

static const Enum< eulerOrdereulerOrderNames
 
static constexpr direction rank = 1
 
static constexpr const char *const typeName = "quaternion"
 
static const quaternion zero
 
static const quaternion I
 

Detailed Description

Quaternion class used to perform rotations in 3D space.

Source files

Definition at line 52 of file quaternion.H.

Member Typedef Documentation

◆ cmptType

typedef scalar cmptType

Definition at line 92 of file quaternion.H.

◆ magType

typedef scalar magType

Definition at line 95 of file quaternion.H.

Member Enumeration Documentation

◆ eulerOrder

enum eulerOrder : unsigned char
Enumerator
XZX 
XYX 
YXY 
YZY 
ZYZ 
ZXZ 
XZY 
XYZ 
YXZ 
YZX 
ZYX 
ZXY 

Definition at line 98 of file quaternion.H.

Constructor & Destructor Documentation

◆ quaternion() [1/11]

quaternion ( )
default

◆ quaternion() [2/11]

quaternion ( const quaternion )
default

◆ quaternion() [3/11]

quaternion ( const Foam::zero  )
inline

Definition at line 24 of file quaternionI.H.

◆ quaternion() [4/11]

quaternion ( const scalar  w,
const vector v 
)
inline

Definition at line 31 of file quaternionI.H.

◆ quaternion() [5/11]

quaternion ( const vector d,
const scalar  theta 
)
inline

Definition at line 38 of file quaternionI.H.

◆ quaternion() [6/11]

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

Definition at line 46 of file quaternionI.H.

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

Here is the call graph for this function:

◆ quaternion() [7/11]

quaternion ( const scalar  w)
inlineexplicit

Definition at line 66 of file quaternionI.H.

◆ quaternion() [8/11]

quaternion ( const vector v)
inlineexplicit

Definition at line 73 of file quaternionI.H.

◆ quaternion() [9/11]

quaternion ( const eulerOrder  order,
const vector angles 
)
inline

Definition at line 87 of file quaternionI.H.

References Foam::abort(), Foam::FatalError, FatalErrorInFunction, quaternion::quaternion(), Vector< Cmpt >::x(), Vector< Cmpt >::y(), and Vector< Cmpt >::z().

Referenced by quaternion::quaternion().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ quaternion() [10/11]

quaternion ( const tensor rotationTensor)
inlineexplicit

Definition at line 200 of file quaternionI.H.

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

Here is the call graph for this function:

◆ quaternion() [11/11]

quaternion ( Istream is)
explicit

Definition at line 54 of file quaternion.C.

Member Function Documentation

◆ operator=() [1/3]

quaternion& operator= ( const quaternion )
default

◆ unit()

Foam::quaternion unit ( const vector v)
inlinestatic

Definition at line 80 of file quaternionI.H.

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

Referenced by joint::unitQuaternion().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ w() [1/2]

Foam::scalar & w ( ) const
inline

◆ v() [1/2]

Foam::vector & v ( ) const
inline

◆ R()

Foam::tensor R ( ) const
inline

Definition at line 347 of file quaternionI.H.

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

Referenced by axisAngle::rotation(), Foam::transform(), and triad::triad().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ eulerAngles()

Foam::vector eulerAngles ( const eulerOrder  order) const
inline

Definition at line 397 of file quaternionI.H.

References Foam::abort(), Foam::FatalError, FatalErrorInFunction, Foam::sqr(), w2, x, y, and Foam::Zero.

Referenced by sixDoFRigidBodyState::write().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ normalized()

Foam::quaternion normalized ( ) const
inline

Definition at line 302 of file quaternionI.H.

References Foam::mag().

Here is the call graph for this function:

◆ w() [2/2]

scalar& w ( )
inline

◆ v() [2/2]

vector& v ( )
inline

◆ normalize()

void normalize ( )
inline

Definition at line 308 of file quaternionI.H.

References Foam::mag().

Referenced by Foam::average().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ transform() [1/2]

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

Definition at line 320 of file quaternionI.H.

References Foam::conjugate().

Referenced by searchableExtrudedCircle::findParametricNearest(), polyline::operator()(), Foam::operator*(), Foam::operator/(), and septernion::operator/=().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ invTransform() [1/2]

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

Definition at line 326 of file quaternionI.H.

References Foam::conjugate().

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

Here is the call graph for this function:
Here is the caller graph for this function:

◆ transform() [2/2]

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

Definition at line 332 of file quaternionI.H.

References Foam::normalize().

Here is the call graph for this function:

◆ invTransform() [2/2]

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

Definition at line 339 of file quaternionI.H.

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

Here is the call graph for this function:

◆ operator+=()

void operator+= ( const quaternion q)
inline

Definition at line 577 of file quaternionI.H.

◆ operator-=()

void operator-= ( const quaternion q)
inline

Definition at line 583 of file quaternionI.H.

◆ operator*=() [1/2]

void operator*= ( const quaternion q)
inline

Definition at line 589 of file quaternionI.H.

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

Here is the call graph for this function:

◆ operator/=() [1/2]

void operator/= ( const quaternion q)
inline

Definition at line 596 of file quaternionI.H.

References Foam::inv().

Here is the call graph for this function:

◆ operator=() [2/3]

void operator= ( const scalar  s)
inline

Definition at line 602 of file quaternionI.H.

References s.

◆ operator=() [3/3]

void operator= ( const vector v)
inline

Definition at line 608 of file quaternionI.H.

◆ operator*=() [2/2]

void operator*= ( const scalar  s)
inline

Definition at line 614 of file quaternionI.H.

References s.

◆ operator/=() [2/2]

void operator/= ( const scalar  s)
inline

Definition at line 620 of file quaternionI.H.

References s.

Member Data Documentation

◆ eulerOrderNames

const Foam::Enum< Foam::quaternion::eulerOrder > eulerOrderNames
static

◆ rank

constexpr direction rank = 1
staticconstexpr

Definition at line 114 of file quaternion.H.

◆ typeName

constexpr const char* const typeName = "quaternion"
staticconstexpr

Definition at line 119 of file quaternion.H.

◆ zero

const Foam::quaternion zero
static

Definition at line 121 of file quaternion.H.

◆ I

const Foam::quaternion I
static

Definition at line 122 of file quaternion.H.

Referenced by septernion::operator=().


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