Quaternion class used to perform rotations in 3D space. More...
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 vector & | v () 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... | |
vector & | v () |
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 |
Private Member Functions | |
quaternion | mulq0v (const vector &v) const |
Multiply vector v by quaternion as if v is a pure quaternion. More... | |
Private Attributes | |
scalar | w_ |
Scalar part of the quaternion ( = cos(theta/2) for rotation) More... | |
vector | v_ |
Vector part of the quaternion ( = axis of rotation) More... | |
Friends | |
Istream & | operator>> (Istream &is, quaternion &) |
Ostream & | operator<< (Ostream &os, const quaternion &C) |
Quaternion class used to perform rotations in 3D space.
Definition at line 60 of file quaternion.H.
typedef scalar cmptType |
Component type.
Definition at line 78 of file quaternion.H.
anonymous enum |
Enumerator | |
---|---|
rank |
Definition at line 82 of file quaternion.H.
|
inline |
Construct null.
Definition at line 28 of file quaternionI.H.
|
inline |
Construct given scalar and vector parts.
Definition at line 31 of file quaternionI.H.
|
inline |
Construct a rotation quaternion given the direction d.
and angle theta
Definition at line 37 of file quaternionI.H.
|
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 Foam::mag(), and Foam::sqrt().
|
inlineexplicit |
Construct given scalar part, the vector part = vector::zero.
Definition at line 63 of file quaternionI.H.
|
inlineexplicit |
Construct a pure quaternion given the vector part, scalar part = 0.
Definition at line 69 of file quaternionI.H.
|
inline |
Construct a quaternion given the three Euler angles.
Definition at line 76 of file quaternionI.H.
|
inlineexplicit |
Construct a quaternion from a rotation tensor.
Definition at line 88 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().
quaternion | ( | Istream & | is | ) |
Construct from Istream.
Definition at line 38 of file quaternion.C.
|
inlineprivate |
Multiply vector v by quaternion as if v is a pure quaternion.
Definition at line 202 of file quaternionI.H.
References w().
Referenced by quaternion::invTransform().
|
inline |
Scalar part of the quaternion ( = cos(theta/2) for rotation)
Definition at line 166 of file quaternionI.H.
Referenced by Foam::conjugate(), quaternion::eulerAngles(), Foam::exp(), Foam::inv(), Foam::magSqr(), Foam::name(), Foam::operator&(), Foam::operator*(), quaternion::operator*=(), Foam::operator+(), Foam::operator-(), Foam::operator/(), Foam::operator<<(), Foam::operator==(), Foam::operator>>(), and Foam::pow().
|
inline |
Vector part of the quaternion ( = axis of rotation)
Definition at line 172 of file quaternionI.H.
Referenced by Foam::conjugate(), quaternion::eulerAngles(), Foam::exp(), Foam::inv(), Foam::magSqr(), Foam::name(), Foam::operator&(), Foam::operator*(), quaternion::operator*=(), Foam::operator+(), Foam::operator-(), Foam::operator/(), Foam::operator<<(), Foam::operator==(), Foam::operator>>(), and Foam::pow().
|
inline |
The rotation tensor corresponding the quaternion.
Definition at line 235 of file quaternionI.H.
References Foam::sqr(), w(), x, and y.
Referenced by surfaceAlignedSBRStressFvMotionSolver::calculateCellRot(), main(), Foam::transform(), and triad::triad().
|
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(), w(), quaternion::w(), Vector< Cmpt >::x(), Vector< Cmpt >::y(), Vector< Cmpt >::z(), and Vector< scalar >::zero.
|
inline |
Definition at line 190 of file quaternionI.H.
References Foam::mag().
|
inline |
Scalar part of the quaternion ( = cos(theta/2) for rotation)
|
inline |
Definition at line 196 of file quaternionI.H.
References Foam::mag().
|
inline |
Rotate the given vector.
Definition at line 208 of file quaternionI.H.
References Foam::conjugate().
Referenced by main(), and Foam::operator*().
|
inline |
Rotate the given vector anti-clockwise.
Definition at line 214 of file quaternionI.H.
References Foam::conjugate(), and quaternion::mulq0v().
Referenced by main().
|
inline |
Rotate the given quaternion (and normalize)
Definition at line 220 of file quaternionI.H.
References Foam::normalize().
|
inline |
Rotate the given quaternion anti-clockwise (and normalize)
Definition at line 227 of file quaternionI.H.
References Foam::conjugate(), and Foam::normalize().
|
inline |
Definition at line 289 of file quaternionI.H.
References quaternion::v_, and quaternion::w_.
|
inline |
Definition at line 295 of file quaternionI.H.
References quaternion::v_, and quaternion::w_.
|
inline |
Definition at line 301 of file quaternionI.H.
References quaternion::v_, and quaternion::w_.
|
inline |
Definition at line 307 of file quaternionI.H.
References quaternion::v(), w(), and quaternion::w().
|
inline |
Definition at line 314 of file quaternionI.H.
References Foam::inv().
|
inline |
Definition at line 320 of file quaternionI.H.
References s().
|
inline |
Definition at line 326 of file quaternionI.H.
|
inline |
Definition at line 332 of file quaternionI.H.
References s().
|
inline |
Definition at line 338 of file quaternionI.H.
References s().
|
friend |
|
friend |
|
private |
Scalar part of the quaternion ( = cos(theta/2) for rotation)
Definition at line 65 of file quaternion.H.
Referenced by quaternion::operator+=(), quaternion::operator-=(), and quaternion::operator=().
|
private |
Vector part of the quaternion ( = axis of rotation)
Definition at line 68 of file quaternion.H.
Referenced by quaternion::operator+=(), quaternion::operator-=(), and quaternion::operator=().
|
static |
Definition at line 90 of file quaternion.H.
|
static |
Definition at line 92 of file quaternion.H.
|
static |
Definition at line 93 of file quaternion.H.
Copyright © 2011-2018 OpenFOAM | OPENFOAM® is a registered trademark of OpenCFD Ltd.