Aether3D Game Engine
Public Member Functions | Static Public Member Functions | Public Attributes | List of all members
ae3d::Quaternion Struct Reference

Stores an orientation. More...

#include <Quaternion.hpp>

Public Member Functions

 Quaternion ()
 Constructor.
 
 Quaternion (const Vec3 &vec, float aW)
 
 Quaternion (const Quaternion &v)=default
 Copy constructor.
 
 Quaternion (Quaternion &&v) noexcept=default
 Move constructor.
 
Quaternionoperator= (Quaternion &&) noexcept=default
 Move assignment.
 
Quaternionoperator= (const Quaternion &)=default
 Copy.
 
Vec3 operator* (const Vec3 &vec) const
 Multiplying a quaternion q with a vector v applies the q-rotation to vec. More...
 
Quaternion operator* (const Quaternion &aQ) const
 Applies rotation aQ to this quaternion and returns the result. More...
 
bool operator== (const Quaternion &q) const
 
bool operator!= (const Quaternion &q) const
 
Quaternion Conjugate () const
 
float FindTwist (const Vec3 &axis) const
 Finds twist angle around axis. More...
 
void GetAxisAngle (Vec3 &outAxis, float &outAngleRad) const
 
void FromAxisAngle (const Vec3 &axis, float angleDeg)
 
void FromMatrix (const Matrix44 &mat)
 
void GetMatrix (Matrix44 &outMatrix) const
 
Vec3 GetEuler () const
 
void Normalize ()
 

Static Public Member Functions

static Quaternion FromEuler (const Vec3 &euler)
 
static Quaternion CreateFromAxisAngle (const Vec3 &axis, float angleDeg)
 

Public Attributes

float x
 
float y
 
float z
 
float w
 

Detailed Description

Stores an orientation.

Constructor & Destructor Documentation

ae3d::Quaternion::Quaternion ( const Vec3 vec,
float  aW 
)
inline
Parameters
vecVector.
aWw.

Member Function Documentation

Quaternion ae3d::Quaternion::Conjugate ( ) const
inline

Gets conjugate. If the quaternion is of unit length, the conjugate is the inverse.

Returns
Conjugate.
static Quaternion ae3d::Quaternion::CreateFromAxisAngle ( const Vec3 axis,
float  angleDeg 
)
inlinestatic
Parameters
axisAxis. Should be normalized.
angleDegAngle in degrees.
float ae3d::Quaternion::FindTwist ( const Vec3 axis) const
inline

Finds twist angle around axis.

Parameters
axisAxis.
Returns
Twist angle (
Todo:
in radians? )
void ae3d::Quaternion::FromAxisAngle ( const Vec3 axis,
float  angleDeg 
)
inline
Parameters
axisAxis. Should be normalized.
angleDegAngle in degrees.
static Quaternion ae3d::Quaternion::FromEuler ( const Vec3 euler)
inlinestatic
Parameters
eulerEuler angles in degrees.
Returns
Quaternion created from euler.
void ae3d::Quaternion::FromMatrix ( const Matrix44 &  mat)
inline
Parameters
matMatrix.
void ae3d::Quaternion::GetAxisAngle ( Vec3 outAxis,
float &  outAngleRad 
) const
inline
Parameters
outAxisAxis.
outAngleRadin radians.
Vec3 ae3d::Quaternion::GetEuler ( ) const
inline
void ae3d::Quaternion::GetMatrix ( Matrix44 &  outMatrix) const
inline

Gets matrix for unit-length quaternion.

Parameters
outMatrixcolumn-major order matrix.
void ae3d::Quaternion::Normalize ( )
inline

Normalizes the quaternion if it's not near unit-length already.

bool ae3d::Quaternion::operator!= ( const Quaternion q) const
inline

Inequality operator.

Parameters
qTested Quaternion.
Returns
True if quaternions are not component-wise equal, false otherwise.
Vec3 ae3d::Quaternion::operator* ( const Vec3 vec) const
inline

Multiplying a quaternion q with a vector v applies the q-rotation to vec.

Parameters
vecInput vector.
Returns
Output vector that's rotated by this Quaternion.
Quaternion ae3d::Quaternion::operator* ( const Quaternion aQ) const
inline

Applies rotation aQ to this quaternion and returns the result.

Returns
This quaterion rotated by aQ.
bool ae3d::Quaternion::operator== ( const Quaternion q) const
inline

Equality operator.

Parameters
qTested Quaternion.
Returns
True if quaternions are component-wise equal, false otherwise.

Member Data Documentation

float ae3d::Quaternion::w

W component.

float ae3d::Quaternion::x

X component.

float ae3d::Quaternion::y

Y component.

float ae3d::Quaternion::z

Z component.


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