molecular
Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | List of all members
molecular::util::Quaternion Class Reference

4D quaternion class for storing rotation values More...

#include <Quaternion.h>

Public Types

using Real = float
 Default scalar type. More...
 

Public Member Functions

 Quaternion ()=default
 Default constructor. More...
 
constexpr Quaternion (const Real w, const Real x, const Real y, const Real z)
 Construct from individual components. More...
 
constexpr Quaternion (const Real inQ[4])
 Construct from array. More...
 
 Quaternion (float w, const Vector3 &vec)
 Create a quaternion out of W and a vector. More...
 
 operator Real * ()
 Conversion operator. More...
 
 operator const Real * () const
 Conversion operator. More...
 
Quaternion operator* (const Quaternion &inQ) const
 
Quaternion operator* (const Real r) const
 
Quaternion operator/ (const Real r) const
 
void operator*= (const Real r)
 
Quaternion operator+ (const Quaternion &inQ) const
 
void operator+= (const Quaternion &inQ)
 
Real Norm () const
 "Length" of the quaternion More...
 
void Normalise ()
 Scale quaternion so that the norm is 1. More...
 
Quaternion Normalized () const
 
Quaternion Conjugate () const
 Conjugate of the quaternion. More...
 
Quaternion Inverse () const
 
Real W () const
 
Real X () const
 
Real Y () const
 
Real Z () const
 

Static Public Member Functions

static Quaternion FromAngles (float x, float y)
 
static Quaternion FromAngles (float heading, float attitude, float bank)
 
static Quaternion FromAxisAndAngle (const Vector3 &axis, float angle)
 
static Quaternion RotationX (float angle)
 
static Quaternion RotationY (float angle)
 
static Quaternion RotationZ (float angle)
 
static Quaternion Slerp (const Quaternion &p, const Quaternion &q, float beta)
 Spherical Linear Interpolation. More...
 

Public Attributes

Real q [4]
 wxyz More...
 

Static Public Attributes

static const Quaternion kIdentity = Quaternion(1,0,0,0)
 Identity constant. More...
 

Detailed Description

4D quaternion class for storing rotation values

Member Typedef Documentation

Default scalar type.

Constructor & Destructor Documentation

molecular::util::Quaternion::Quaternion ( )
default

Default constructor.

Does not initialize the quaternion to identity!

constexpr molecular::util::Quaternion::Quaternion ( const Real  w,
const Real  x,
const Real  y,
const Real  z 
)

Construct from individual components.

constexpr molecular::util::Quaternion::Quaternion ( const Real  inQ[4])

Construct from array.

Order WXYZ.

molecular::util::Quaternion::Quaternion ( float  w,
const Vector3 vec 
)
inline

Create a quaternion out of W and a vector.

Member Function Documentation

Quaternion molecular::util::Quaternion::Conjugate ( ) const
inline

Conjugate of the quaternion.

For normalised quaternions (like most rotation quaternions), this is equal to the inverse, but calculation is faster.

See also
Inverse()
Quaternion molecular::util::Quaternion::FromAngles ( float  x,
float  y 
)
inlinestatic
Quaternion molecular::util::Quaternion::FromAngles ( float  heading,
float  attitude,
float  bank 
)
static
Quaternion molecular::util::Quaternion::FromAxisAndAngle ( const Vector3 axis,
float  angle 
)
inlinestatic
Quaternion molecular::util::Quaternion::Inverse ( ) const
inline

The inverse of a quaternion represents the opposite rotation (like an inverse matrix). For quaternions known to be normalised consider using Conjugate() instead, since it yields the same results but calculation is faster.

See also
Conjugate()
Real molecular::util::Quaternion::Norm ( ) const
inline

"Length" of the quaternion

void molecular::util::Quaternion::Normalise ( )
inline

Scale quaternion so that the norm is 1.

Quaternion molecular::util::Quaternion::Normalized ( ) const
inline
molecular::util::Quaternion::operator const Real * ( ) const
inline

Conversion operator.

molecular::util::Quaternion::operator Real * ( )
inline

Conversion operator.

Quaternion molecular::util::Quaternion::operator* ( const Quaternion inQ) const
inline
Quaternion molecular::util::Quaternion::operator* ( const Real  r) const
inline
void molecular::util::Quaternion::operator*= ( const Real  r)
inline
Quaternion molecular::util::Quaternion::operator+ ( const Quaternion inQ) const
inline
void molecular::util::Quaternion::operator+= ( const Quaternion inQ)
inline
Quaternion molecular::util::Quaternion::operator/ ( const Real  r) const
inline
Quaternion molecular::util::Quaternion::RotationX ( float  angle)
inlinestatic
Quaternion molecular::util::Quaternion::RotationY ( float  angle)
inlinestatic
Quaternion molecular::util::Quaternion::RotationZ ( float  angle)
inlinestatic
Quaternion molecular::util::Quaternion::Slerp ( const Quaternion p,
const Quaternion q,
float  beta 
)
static

Spherical Linear Interpolation.

Real molecular::util::Quaternion::W ( ) const
inline
Real molecular::util::Quaternion::X ( ) const
inline
Real molecular::util::Quaternion::Y ( ) const
inline
Real molecular::util::Quaternion::Z ( ) const
inline

Member Data Documentation

const Quaternion molecular::util::Quaternion::kIdentity = Quaternion(1,0,0,0)
static

Identity constant.

Real molecular::util::Quaternion::q[4]

wxyz


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