My Project
Loading...
Searching...
No Matches
Maths::Quat< T > Class Template Reference

Quaternion class template for rotations in 3D space Supports Euler conversion, normalization, multiplication, slerp/lerp, and rotation helpers. More...

#include <MQuaternion.hpp>

Public Member Functions

 Quat (T m_x, T m_y, T m_z, T m_w)
 Constructor from components.
 Quat ()=default
 Default constructor (uninitialized).
 ~Quat ()=default
x () const
y () const
z () const
w () const
void SetX (T newX)
void SetY (T newY)
void SetZ (T newZ)
void SetW (T newW)
void Set (T newX, T newY, T newZ, T newW)
Vec3< T > EulerAngles () const
 Convert quaternion to Euler angles (radians).
Quat< T > Normalized () const
 Return normalized quaternion.
Magnitude () const
 Compute magnitude of quaternion.
This (int i) const
 Access component by index (0=x,1=y,2=z,3=w).
void SetLookRotation (const Vec3< T > &forward, const Vec3< T > &up)
 Set quaternion from forward and up vectors.
void ToAngleAxis (T &angle, Vec3< T > &axis)
 Extract rotation angle and axis from quaternion.
void setFromToRotation (const Quat< T > &to)
 Set quaternion to represent rotation from this to another quaternion.
bool Equals (const Quat< T > &q) const
 Check equality with another quaternion.
std::string ToString () const
 Return a string representation for debugging.
void Normalize ()
 Normalize quaternion in place.
Quat< T > operator* (const Quat< T > &q) const
 Quaternion multiplication (composition of rotations).
bool operator== (const Maths::Quat< T > &q) const
 Equality operator.

Static Public Member Functions

static Quat< T > Identity ()
 Return identity quaternion (no rotation).
static Quat< T > AngleAxis (T angle, const Quat< T > &axis)
static Quat< T > SlerpUnclamped (const Quat< T > &b, T t)
static Quat< T > LerpUnclamped (const Quat< T > &b, T t)
static Quat< T > FromEuler (const Vec3< T > &eulerRad)
static Quat< T > Slerp (const Quat< T > &a, const Quat< T > &b, T t)
static Quat< T > Lerp (const Quat< T > &a, const Quat< T > &b, T t)
static Quat< T > Cross (const Quat< T > &b)
static Quat< T > Inverse (const Quat< T > &q)
static Vec3< T > MulltiplyQuatVec (const Vec3< T > &v, const Quat< T > &q)
 Rotate a vector by quaternion.
static T Angle (const Quat< T > &a, const Quat< T > &b)
 Compute angle between two quaternions.
static T Dot (const Quat< T > &a, const Quat< T > &b)
 Dot product of two quaternions.
static void LookRotation (const Vec3< T > &forward, const Vec3< T > &up)
static void RotateTowards (const Quat< T > &to, T maxDegreesDelta)
static void FromToRotation (const Quat< T > &to)

Public Attributes

m_x
m_y
m_z
m_w

Static Public Attributes

static constexpr T kEpsilon = static_cast<T>(1e-6)
static constexpr T PI = static_cast<T>(3.14159265358979323846)

Detailed Description

template<typename T = float>
class Maths::Quat< T >

Quaternion class template for rotations in 3D space Supports Euler conversion, normalization, multiplication, slerp/lerp, and rotation helpers.

Constructor & Destructor Documentation

◆ Quat() [1/2]

template<typename T = float>
Maths::Quat< T >::Quat ( T m_x,
T m_y,
T m_z,
T m_w )

Constructor from components.

◆ Quat() [2/2]

template<typename T = float>
Maths::Quat< T >::Quat ( )
default

Default constructor (uninitialized).

◆ ~Quat()

template<typename T = float>
Maths::Quat< T >::~Quat ( )
default

Member Function Documentation

◆ Angle()

template<typename T = float>
T Maths::Quat< T >::Angle ( const Quat< T > & a,
const Quat< T > & b )
static

Compute angle between two quaternions.

◆ AngleAxis()

template<typename T = float>
Quat< T > Maths::Quat< T >::AngleAxis ( T angle,
const Quat< T > & axis )
static

◆ Cross()

template<typename T = float>
Quat< T > Maths::Quat< T >::Cross ( const Quat< T > & b)
static

◆ Dot()

template<typename T = float>
T Maths::Quat< T >::Dot ( const Quat< T > & a,
const Quat< T > & b )
static

Dot product of two quaternions.

◆ Equals()

template<typename T = float>
bool Maths::Quat< T >::Equals ( const Quat< T > & q) const

Check equality with another quaternion.

◆ EulerAngles()

template<typename T = float>
Vec3< T > Maths::Quat< T >::EulerAngles ( ) const

Convert quaternion to Euler angles (radians).

INSTANCE PROPERTIES ////////

◆ FromEuler()

template<typename T = float>
Quat< T > Maths::Quat< T >::FromEuler ( const Vec3< T > & eulerRad)
static

◆ FromToRotation()

template<typename T = float>
void Maths::Quat< T >::FromToRotation ( const Quat< T > & to)
static

◆ Identity()

template<typename T = float>
Quat< T > Maths::Quat< T >::Identity ( )
static

Return identity quaternion (no rotation).

STATIC PROPERTIES ////////

◆ Inverse()

template<typename T = float>
Quat< T > Maths::Quat< T >::Inverse ( const Quat< T > & q)
static

◆ Lerp()

template<typename T = float>
Quat< T > Maths::Quat< T >::Lerp ( const Quat< T > & a,
const Quat< T > & b,
T t )
static

◆ LerpUnclamped()

template<typename T = float>
Quat< T > Maths::Quat< T >::LerpUnclamped ( const Quat< T > & b,
T t )
static

◆ LookRotation()

template<typename T = float>
void Maths::Quat< T >::LookRotation ( const Vec3< T > & forward,
const Vec3< T > & up )
static

◆ Magnitude()

template<typename T = float>
T Maths::Quat< T >::Magnitude ( ) const

Compute magnitude of quaternion.

◆ MulltiplyQuatVec()

template<typename T = float>
Vec3< T > Maths::Quat< T >::MulltiplyQuatVec ( const Vec3< T > & v,
const Quat< T > & q )
static

Rotate a vector by quaternion.

◆ Normalize()

template<typename T = float>
void Maths::Quat< T >::Normalize ( )

Normalize quaternion in place.

◆ Normalized()

template<typename T = float>
Quat< T > Maths::Quat< T >::Normalized ( ) const

Return normalized quaternion.

◆ operator*()

template<typename T = float>
Quat< T > Maths::Quat< T >::operator* ( const Quat< T > & q) const

Quaternion multiplication (composition of rotations).

OPERATORS ////////

◆ operator==()

template<typename T = float>
bool Maths::Quat< T >::operator== ( const Maths::Quat< T > & q) const

Equality operator.

◆ RotateTowards()

template<typename T = float>
void Maths::Quat< T >::RotateTowards ( const Quat< T > & to,
T maxDegreesDelta )
static

◆ Set()

template<typename T = float>
void Maths::Quat< T >::Set ( T newX,
T newY,
T newZ,
T newW )
inline

◆ setFromToRotation()

template<typename T = float>
void Maths::Quat< T >::setFromToRotation ( const Quat< T > & to)

Set quaternion to represent rotation from this to another quaternion.

◆ SetLookRotation()

template<typename T = float>
void Maths::Quat< T >::SetLookRotation ( const Vec3< T > & forward,
const Vec3< T > & up )

Set quaternion from forward and up vectors.

PUBLIC METHODS ////////

◆ SetW()

template<typename T = float>
void Maths::Quat< T >::SetW ( T newW)
inline

◆ SetX()

template<typename T = float>
void Maths::Quat< T >::SetX ( T newX)
inline

◆ SetY()

template<typename T = float>
void Maths::Quat< T >::SetY ( T newY)
inline

◆ SetZ()

template<typename T = float>
void Maths::Quat< T >::SetZ ( T newZ)
inline

◆ Slerp()

template<typename T = float>
Quat< T > Maths::Quat< T >::Slerp ( const Quat< T > & a,
const Quat< T > & b,
T t )
static

◆ SlerpUnclamped()

template<typename T = float>
Quat< T > Maths::Quat< T >::SlerpUnclamped ( const Quat< T > & b,
T t )
static

◆ This()

template<typename T = float>
T Maths::Quat< T >::This ( int i) const

Access component by index (0=x,1=y,2=z,3=w).

◆ ToAngleAxis()

template<typename T = float>
void Maths::Quat< T >::ToAngleAxis ( T & angle,
Vec3< T > & axis )

Extract rotation angle and axis from quaternion.

◆ ToString()

template<typename T = float>
std::string Maths::Quat< T >::ToString ( ) const

Return a string representation for debugging.

◆ w()

template<typename T = float>
T Maths::Quat< T >::w ( ) const
inline

◆ x()

template<typename T = float>
T Maths::Quat< T >::x ( ) const
inline

◆ y()

template<typename T = float>
T Maths::Quat< T >::y ( ) const
inline

◆ z()

template<typename T = float>
T Maths::Quat< T >::z ( ) const
inline

Member Data Documentation

◆ kEpsilon

template<typename T = float>
T Maths::Quat< T >::kEpsilon = static_cast<T>(1e-6)
staticconstexpr

◆ m_w

template<typename T = float>
T Maths::Quat< T >::m_w

◆ m_x

template<typename T = float>
T Maths::Quat< T >::m_x

◆ m_y

template<typename T = float>
T Maths::Quat< T >::m_y

◆ m_z

template<typename T = float>
T Maths::Quat< T >::m_z

◆ PI

template<typename T = float>
T Maths::Quat< T >::PI = static_cast<T>(3.14159265358979323846)
staticconstexpr

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