BELFEM 0.9.0
Berkeley Lab Finite Element Framework
Loading...
Searching...
No Matches
belfem::Quaternion< T > Class Template Reference

Scalar-first quaternion value type for 3D rotations. More...

#include <cl_Quaternion.hpp>

Public Member Functions

 Quaternion ()
 Quaternion (T a, T b, T c, T d)
 Quaternion (const Vector< T > &aVector)
 Quaternion (const Vector< T > &aAxis, const T aAngle)
 Construct a rotation quaternion from axis and angle.
T * data ()
const T * data () const
T & a ()
const T & a () const
T & b ()
const T & b () const
T & c ()
const T & c () const
T & d ()
const T & d () const
T * begin ()
const T * begin () const
T * end ()
const T * end () const
Quaternionoperator= (std::initializer_list< T > initList)
Quaternionoperator+= (const Quaternion &aOther)
Quaternionoperator-= (const Quaternion &aOther)
Quaternionoperator*= (T aScalar)
Quaternionoperator/= (T aScalar)
Quaternionoperator*= (const Quaternion &aOther)
norm () const
Quaternion< T > conj () const
Quaternion< T > inv () const
Quaternion< T > & normalize ()
Vector< T > rotate (const Vector< T > &aVector) const
 Rotate a 3D vector by this unit quaternion.

Static Public Member Functions

static Quaternion identity ()

Detailed Description

template<typename T>
class belfem::Quaternion< T >

Scalar-first quaternion value type for 3D rotations.

See also
Quaternion Usage Guide

Constructor & Destructor Documentation

◆ Quaternion() [1/4]

template<typename T>
belfem::Quaternion< T >::Quaternion ( )
inline

◆ Quaternion() [2/4]

template<typename T>
belfem::Quaternion< T >::Quaternion ( T a,
T b,
T c,
T d )
inline

◆ Quaternion() [3/4]

template<typename T>
belfem::Quaternion< T >::Quaternion ( const Vector< T > & aVector)
inline

◆ Quaternion() [4/4]

template<typename T>
belfem::Quaternion< T >::Quaternion ( const Vector< T > & aAxis,
const T aAngle )
inline

Construct a rotation quaternion from axis and angle.

Parameters
aAxisThe rotation axis (will be normalized internally)
aAngleThe rotation angle in radians

Member Function Documentation

◆ a() [1/2]

template<typename T>
T & belfem::Quaternion< T >::a ( )
inline

◆ a() [2/2]

template<typename T>
const T & belfem::Quaternion< T >::a ( ) const
inline

◆ b() [1/2]

template<typename T>
T & belfem::Quaternion< T >::b ( )
inline

◆ b() [2/2]

template<typename T>
const T & belfem::Quaternion< T >::b ( ) const
inline

◆ begin() [1/2]

template<typename T>
T * belfem::Quaternion< T >::begin ( )
inline

◆ begin() [2/2]

template<typename T>
const T * belfem::Quaternion< T >::begin ( ) const
inline

◆ c() [1/2]

template<typename T>
T & belfem::Quaternion< T >::c ( )
inline

◆ c() [2/2]

template<typename T>
const T & belfem::Quaternion< T >::c ( ) const
inline

◆ conj()

template<typename T>
Quaternion< T > belfem::Quaternion< T >::conj ( ) const
inline

◆ d() [1/2]

template<typename T>
T & belfem::Quaternion< T >::d ( )
inline

◆ d() [2/2]

template<typename T>
const T & belfem::Quaternion< T >::d ( ) const
inline

◆ data() [1/2]

template<typename T>
T * belfem::Quaternion< T >::data ( )
inline

◆ data() [2/2]

template<typename T>
const T * belfem::Quaternion< T >::data ( ) const
inline

◆ end() [1/2]

template<typename T>
T * belfem::Quaternion< T >::end ( )
inline

◆ end() [2/2]

template<typename T>
const T * belfem::Quaternion< T >::end ( ) const
inline

◆ identity()

template<typename T>
Quaternion belfem::Quaternion< T >::identity ( )
inlinestatic

◆ inv()

template<typename T>
Quaternion< T > belfem::Quaternion< T >::inv ( ) const
inline

◆ norm()

template<typename T>
T belfem::Quaternion< T >::norm ( ) const
inline

◆ normalize()

template<typename T>
Quaternion< T > & belfem::Quaternion< T >::normalize ( )
inline

◆ operator*=() [1/2]

template<typename T>
Quaternion & belfem::Quaternion< T >::operator*= ( const Quaternion< T > & aOther)
inline

◆ operator*=() [2/2]

template<typename T>
Quaternion & belfem::Quaternion< T >::operator*= ( T aScalar)
inline

◆ operator+=()

template<typename T>
Quaternion & belfem::Quaternion< T >::operator+= ( const Quaternion< T > & aOther)
inline

◆ operator-=()

template<typename T>
Quaternion & belfem::Quaternion< T >::operator-= ( const Quaternion< T > & aOther)
inline

◆ operator/=()

template<typename T>
Quaternion & belfem::Quaternion< T >::operator/= ( T aScalar)
inline

◆ operator=()

template<typename T>
Quaternion & belfem::Quaternion< T >::operator= ( std::initializer_list< T > initList)
inline

◆ rotate()

template<typename T>
Vector< T > belfem::Quaternion< T >::rotate ( const Vector< T > & aVector) const
inline

Rotate a 3D vector by this unit quaternion.

Parameters
aVectorThe vector to rotate (must have length 3)
Returns
The rotated vector

Uses the formula: v' = q * v * q* (conjugate) Requires a unit quaternion.


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