utility 2026.1.9
A comprehensive C++ utilities library tailored for the development of modern desktop and extended reality (XR) applications.
Loading...
Searching...
No Matches
utility::math::Quaternion< QuaternionComponentType > Class Template Reference

Quaternion class inheriting from glm::qua. More...

#include <headers/utility/math/quaternion.hpp>

Inheritance diagram for utility::math::Quaternion< QuaternionComponentType >:
Collaboration diagram for utility::math::Quaternion< QuaternionComponentType >:

Public Member Functions

 Quaternion ()
 Default constructor (identity quaternion).
 
 Quaternion (QuaternionComponentType x, QuaternionComponentType y, QuaternionComponentType z, QuaternionComponentType w)
 Construct from explicit components in (x, y, z, w) order.
 
 Quaternion (const glm::qua< QuaternionComponentType > &q)
 Construct from a GLM quaternion.
 
 Quaternion (const Quaternion &other)=default
 Copy constructor.
 
 Quaternion (Quaternion &&other) noexcept=default
 Move constructor.
 
 ~Quaternion ()=default
 Default destructor for Quaternion.
 
Quaternionoperator= (const Quaternion &other)=default
 Copy assignment operator.
 
Quaternionoperator= (Quaternion &&other) noexcept=default
 Move assignment operator.
 
Quaternion operator+ (const Quaternion &rhs) const noexcept
 Quaternion addition.
 
Quaternionoperator+= (const Quaternion &rhs) noexcept
 Quaternion addition assignment.
 
Quaternion operator- (const Quaternion &rhs) const noexcept
 Quaternion subtraction.
 
Quaternionoperator-= (const Quaternion &rhs) noexcept
 Quaternion subtraction assignment.
 
Quaternion operator* (const Quaternion &rhs) const noexcept
 Quaternion multiplication (Hamilton product).
 
Quaternionoperator*= (const Quaternion &rhs) noexcept
 Quaternion multiplication assignment (Hamilton product).
 
Quaternion operator* (QuaternionComponentType scalar) const noexcept
 Scalar multiplication.
 
Quaternionoperator*= (QuaternionComponentType scalar) noexcept
 Scalar multiplication assignment.
 
bool operator== (const Quaternion &rhs) const noexcept
 Equality comparison.
 
bool equalsEpsilon (const Quaternion &rhs, QuaternionComponentType epsilon=QuaternionComponentType { 1e-5 }) const
 Approximate equality using an epsilon threshold.
 
bool operator!= (const Quaternion &rhs) const noexcept
 Inequality comparison.
 
Quaternion operator- (void) const noexcept
 Unary negation.
 

Friends

Quaternion operator* (QuaternionComponentType scalar, const Quaternion &q)
 Friend function for scalar multiplication with scalar on the left.
 

Detailed Description

template<CanBeQuaternionComponent QuaternionComponentType>
class utility::math::Quaternion< QuaternionComponentType >

Quaternion class inheriting from glm::qua.

Template Parameters
QuaternionComponentTypeFloating-point type for quaternion components.

Definition at line 65 of file quaternion.hpp.

Constructor & Destructor Documentation

◆ Quaternion() [1/5]

template<CanBeQuaternionComponent QuaternionComponentType>
utility::math::Quaternion< QuaternionComponentType >::Quaternion ( )
inline

Default constructor (identity quaternion).

Definition at line 72 of file quaternion.hpp.

Here is the caller graph for this function:

◆ Quaternion() [2/5]

template<CanBeQuaternionComponent QuaternionComponentType>
utility::math::Quaternion< QuaternionComponentType >::Quaternion ( QuaternionComponentType  x,
QuaternionComponentType  y,
QuaternionComponentType  z,
QuaternionComponentType  w 
)
inline

Construct from explicit components in (x, y, z, w) order.

Note: this library exposes the parameter order (x, y, z, w) with the scalar component (w) last. This deliberately differs from GLM's glm::qua(w, x, y, z) constructor, which places the scalar component first. The arguments are remapped internally; pass (x, y, z, w).

Parameters
xX component.
yY component.
zZ component.
wW component.

Definition at line 92 of file quaternion.hpp.

◆ Quaternion() [3/5]

template<CanBeQuaternionComponent QuaternionComponentType>
utility::math::Quaternion< QuaternionComponentType >::Quaternion ( const glm::qua< QuaternionComponentType > &  q)
inlineexplicit

Construct from a GLM quaternion.

Parameters
qSource quaternion.

Definition at line 102 of file quaternion.hpp.

◆ Quaternion() [4/5]

template<CanBeQuaternionComponent QuaternionComponentType>
utility::math::Quaternion< QuaternionComponentType >::Quaternion ( const Quaternion< QuaternionComponentType > &  other)
default

Copy constructor.

Parameters
otherThe Quaternion object to copy from.

◆ Quaternion() [5/5]

template<CanBeQuaternionComponent QuaternionComponentType>
utility::math::Quaternion< QuaternionComponentType >::Quaternion ( Quaternion< QuaternionComponentType > &&  other)
defaultnoexcept

Move constructor.

Parameters
otherThe Quaternion object to move from.

Member Function Documentation

◆ equalsEpsilon()

template<CanBeQuaternionComponent QuaternionComponentType>
bool utility::math::Quaternion< QuaternionComponentType >::equalsEpsilon ( const Quaternion< QuaternionComponentType > &  rhs,
QuaternionComponentType  epsilon = QuaternionComponentType { 1e-5 } 
) const
inline

Approximate equality using an epsilon threshold.

Returns true if each component is within epsilon of its counterpart in rhs.

Parameters
rhsThe quaternion to compare with.
epsilonThe maximum allowed difference per component.
Returns
True if the quaternions are equal within epsilon.

Definition at line 257 of file quaternion.hpp.

◆ operator!=()

template<CanBeQuaternionComponent QuaternionComponentType>
bool utility::math::Quaternion< QuaternionComponentType >::operator!= ( const Quaternion< QuaternionComponentType > &  rhs) const
inlinenoexcept

Inequality comparison.

Parameters
rhsThe quaternion to compare with.
Returns
True if the quaternions are not equal, false otherwise.

Definition at line 272 of file quaternion.hpp.

◆ operator*() [1/2]

template<CanBeQuaternionComponent QuaternionComponentType>
Quaternion utility::math::Quaternion< QuaternionComponentType >::operator* ( const Quaternion< QuaternionComponentType > &  rhs) const
inlinenoexcept

Quaternion multiplication (Hamilton product).

Parameters
rhsThe quaternion to multiply with.
Returns
The resulting quaternion.

Definition at line 191 of file quaternion.hpp.

Here is the call graph for this function:

◆ operator*() [2/2]

template<CanBeQuaternionComponent QuaternionComponentType>
Quaternion utility::math::Quaternion< QuaternionComponentType >::operator* ( QuaternionComponentType  scalar) const
inlinenoexcept

Scalar multiplication.

Parameters
scalarThe scalar value to multiply with.
Returns
The resulting quaternion.

Definition at line 216 of file quaternion.hpp.

Here is the call graph for this function:

◆ operator*=() [1/2]

template<CanBeQuaternionComponent QuaternionComponentType>
Quaternion & utility::math::Quaternion< QuaternionComponentType >::operator*= ( const Quaternion< QuaternionComponentType > &  rhs)
inlinenoexcept

Quaternion multiplication assignment (Hamilton product).

Parameters
rhsThe quaternion to multiply with.
Returns
A reference to this quaternion after multiplication.

Definition at line 203 of file quaternion.hpp.

◆ operator*=() [2/2]

template<CanBeQuaternionComponent QuaternionComponentType>
Quaternion & utility::math::Quaternion< QuaternionComponentType >::operator*= ( QuaternionComponentType  scalar)
inlinenoexcept

Scalar multiplication assignment.

Parameters
scalarThe scalar value to multiply with.
Returns
A reference to this quaternion after multiplication.

Definition at line 228 of file quaternion.hpp.

◆ operator+()

template<CanBeQuaternionComponent QuaternionComponentType>
Quaternion utility::math::Quaternion< QuaternionComponentType >::operator+ ( const Quaternion< QuaternionComponentType > &  rhs) const
inlinenoexcept

Quaternion addition.

Parameters
rhsThe quaternion to add.
Returns
The resulting quaternion.

Definition at line 143 of file quaternion.hpp.

Here is the call graph for this function:

◆ operator+=()

template<CanBeQuaternionComponent QuaternionComponentType>
Quaternion & utility::math::Quaternion< QuaternionComponentType >::operator+= ( const Quaternion< QuaternionComponentType > &  rhs)
inlinenoexcept

Quaternion addition assignment.

Parameters
rhsThe quaternion to add.
Returns
A reference to this quaternion after addition.

Definition at line 155 of file quaternion.hpp.

◆ operator-() [1/2]

template<CanBeQuaternionComponent QuaternionComponentType>
Quaternion utility::math::Quaternion< QuaternionComponentType >::operator- ( const Quaternion< QuaternionComponentType > &  rhs) const
inlinenoexcept

Quaternion subtraction.

Parameters
rhsThe quaternion to subtract.
Returns
The resulting quaternion.

Definition at line 167 of file quaternion.hpp.

Here is the call graph for this function:

◆ operator-() [2/2]

template<CanBeQuaternionComponent QuaternionComponentType>
Quaternion utility::math::Quaternion< QuaternionComponentType >::operator- ( void  ) const
inlinenoexcept

Unary negation.

Returns
The negated quaternion.

Definition at line 281 of file quaternion.hpp.

Here is the call graph for this function:

◆ operator-=()

template<CanBeQuaternionComponent QuaternionComponentType>
Quaternion & utility::math::Quaternion< QuaternionComponentType >::operator-= ( const Quaternion< QuaternionComponentType > &  rhs)
inlinenoexcept

Quaternion subtraction assignment.

Parameters
rhsThe quaternion to subtract.
Returns
A reference to this quaternion after subtraction.

Definition at line 179 of file quaternion.hpp.

◆ operator=() [1/2]

template<CanBeQuaternionComponent QuaternionComponentType>
Quaternion & utility::math::Quaternion< QuaternionComponentType >::operator= ( const Quaternion< QuaternionComponentType > &  other)
default

Copy assignment operator.

Parameters
otherThe Quaternion object to copy from.
Returns
A reference to this Quaternion object.

◆ operator=() [2/2]

template<CanBeQuaternionComponent QuaternionComponentType>
Quaternion & utility::math::Quaternion< QuaternionComponentType >::operator= ( Quaternion< QuaternionComponentType > &&  other)
defaultnoexcept

Move assignment operator.

Parameters
otherThe Quaternion object to move from.
Returns
A reference to this Quaternion object.

◆ operator==()

template<CanBeQuaternionComponent QuaternionComponentType>
bool utility::math::Quaternion< QuaternionComponentType >::operator== ( const Quaternion< QuaternionComponentType > &  rhs) const
inlinenoexcept

Equality comparison.

Uses exact component-wise equality. For floating-point types prefer equalsEpsilon to tolerate rounding error.

Parameters
rhsThe quaternion to compare with.
Returns
True if the quaternions are equal, false otherwise.

Definition at line 242 of file quaternion.hpp.

Friends And Related Symbol Documentation

◆ operator*

template<CanBeQuaternionComponent QuaternionComponentType>
Quaternion operator* ( QuaternionComponentType  scalar,
const Quaternion< QuaternionComponentType > &  q 
)
friend

Friend function for scalar multiplication with scalar on the left.

Parameters
scalarThe scalar value to multiply with.
qThe quaternion to multiply.
Returns
The resulting quaternion.

Definition at line 294 of file quaternion.hpp.


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