Base Framework
Public Member Functions | Protected Attributes | Related Functions | List of all members
Quaternion< TYPE > Class Template Reference

Quaternion. More...

#include <base/math/Quaternion.h>

Public Member Functions

 Quaternion () noexcept
 
 Quaternion (const Vector3D< TYPE > &xyz, const TYPE &_w) noexcept
 
 Quaternion (const TYPE &x, const TYPE &y, const TYPE &z, const TYPE &w) noexcept
 
 Quaternion (const Quaternion &copy) noexcept
 
Quaternionoperator= (const Quaternion &assign) noexcept
 
TYPE getX () const noexcept
 
TYPE getY () const noexcept
 
TYPE getZ () const noexcept
 
TYPE getW () const noexcept
 
void setX (const TYPE &x) noexcept
 
void setY (const TYPE &y) noexcept
 
void setZ (const TYPE &z) noexcept
 
void setW (const TYPE &w) noexcept
 
QuaternionzeroAdjust (const TYPE &zero) noexcept
 
bool isZero () const noexcept
 
bool isProper () const noexcept
 
Quaternion plus () const noexcept
 
Quaternion minus () const noexcept
 
Quaternionnegate () noexcept
 
Quaternionadd (const Quaternion &value) noexcept
 
Quaternionsubtract (const Quaternion &value) noexcept
 
Quaternionmultiply (const TYPE &value) noexcept
 
Quaterniondivide (const TYPE &value) noexcept
 
bool operator== (const Quaternion &value) const noexcept
 
Quaternionoperator+= (const Quaternion &value) noexcept
 
Quaternionoperator-= (const Quaternion &value) noexcept
 
Quaternionoperator*= (const TYPE &value) noexcept
 
Quaternionoperator/= (const TYPE &value) noexcept
 
Quaternion operator+ () const noexcept
 
Quaternion operator- () const noexcept
 

Protected Attributes

TYPE x = 0
 
TYPE y = 0
 
TYPE z = 0
 
TYPE w = 0
 

Related Functions

(Note that these are not member functions.)

template<class TYPE >
Quaternion< TYPE > operator+ (const Quaternion< TYPE > &left, const Quaternion< TYPE > &right) noexcept
 
template<class TYPE >
Quaternion< TYPE > operator- (const Quaternion< TYPE > &left, const Quaternion< TYPE > &right) noexcept
 
template<class TYPE >
Quaternion< TYPE > operator* (const Quaternion< TYPE > &left, const TYPE &right) noexcept
 
template<class TYPE >
Quaternion< TYPE > operator* (const TYPE &left, const Quaternion< TYPE > &right) noexcept
 
template<class TYPE >
Quaternion< TYPE > operator/ (const Quaternion< TYPE > &left, const TYPE &right) noexcept
 
template<class TYPE >
TYPE dot (const Quaternion< TYPE > &left, const Quaternion< TYPE > &right) noexcept
 
template<class TYPE >
FormatOutputStreamoperator<< (FormatOutputStream &stream, const Quaternion< TYPE > &value)
 

Detailed Description

template<class TYPE>
class Quaternion< TYPE >

Quaternion.

A quaternion.

Version
1.0

Constructor & Destructor Documentation

◆ Quaternion() [1/4]

template<class TYPE >
Quaternion< TYPE >::Quaternion ( )
inlinenoexcept

Initializes quaternion as origin (0, 0, 0, 0).

◆ Quaternion() [2/4]

template<class TYPE >
Quaternion< TYPE >::Quaternion ( const Vector3D< TYPE > &  xyz,
const TYPE &  _w 
)
inlinenoexcept

Initializes quaternion from the specified coordinates.

Parameters
xyzThe desired X, Y, Z coordinates.
wThe desired W coordinate.

◆ Quaternion() [3/4]

template<class TYPE >
Quaternion< TYPE >::Quaternion ( const TYPE &  x,
const TYPE &  y,
const TYPE &  z,
const TYPE &  w 
)
inlinenoexcept

Initializes quaternion from the specified coordinates.

Parameters
xThe desired X coordinate.
yThe desired Y coordinate.
zThe desired Z coordinate.
wThe desired W coordinate.

◆ Quaternion() [4/4]

template<class TYPE >
Quaternion< TYPE >::Quaternion ( const Quaternion< TYPE > &  copy)
inlinenoexcept

Initializes quaternion by copying from other quaternion.

Parameters
copyThe desired quaternion.

Member Function Documentation

◆ add()

template<class TYPE >
Quaternion& Quaternion< TYPE >::add ( const Quaternion< TYPE > &  value)
inlinenoexcept

Adds the specified quaternion to this quaternion.

◆ divide()

template<class TYPE >
Quaternion& Quaternion< TYPE >::divide ( const TYPE &  value)
inlinenoexcept

Divides this quaternion with the specified value.

◆ getW()

template<class TYPE >
TYPE Quaternion< TYPE >::getW ( ) const
inlinenoexcept

Returns the W coordinate of the quaternion.

◆ getX()

template<class TYPE >
TYPE Quaternion< TYPE >::getX ( ) const
inlinenoexcept

Returns the X coordinate of the quaternion.

◆ getY()

template<class TYPE >
TYPE Quaternion< TYPE >::getY ( ) const
inlinenoexcept

Returns the Y coordinate of the quaternion.

◆ getZ()

template<class TYPE >
TYPE Quaternion< TYPE >::getZ ( ) const
inlinenoexcept

Returns the Z coordinate of the quaternion.

◆ isProper()

template<class TYPE >
bool Quaternion< TYPE >::isProper ( ) const
inlinenoexcept

Returns true if the length of this quaternion is greater zero.

◆ isZero()

template<class TYPE >
bool Quaternion< TYPE >::isZero ( ) const
inlinenoexcept

Returns true if the length of this quaternion is zero.

◆ minus()

template<class TYPE >
Quaternion Quaternion< TYPE >::minus ( ) const
inlinenoexcept

Unary minus.

◆ multiply()

template<class TYPE >
Quaternion& Quaternion< TYPE >::multiply ( const TYPE &  value)
inlinenoexcept

Multiplies this quaternion with the specified value.

◆ negate()

template<class TYPE >
Quaternion& Quaternion< TYPE >::negate ( )
inlinenoexcept

Negates the quaternion.

◆ operator*=()

template<class TYPE >
Quaternion& Quaternion< TYPE >::operator*= ( const TYPE &  value)
inlinenoexcept

Multiplies this quaternion with the specified value.

Parameters
valueThe multiplicator.

◆ operator+()

template<class TYPE >
Quaternion Quaternion< TYPE >::operator+ ( ) const
inlinenoexcept

Unary plus.

◆ operator+=()

template<class TYPE >
Quaternion& Quaternion< TYPE >::operator+= ( const Quaternion< TYPE > &  value)
inlinenoexcept

Adds the specified quaternion to this quaternion.

Parameters
valueThe value to be added.

◆ operator-()

template<class TYPE >
Quaternion Quaternion< TYPE >::operator- ( ) const
inlinenoexcept

Unary minus.

◆ operator-=()

template<class TYPE >
Quaternion& Quaternion< TYPE >::operator-= ( const Quaternion< TYPE > &  value)
inlinenoexcept

Subtracts the specified quaternion from this quaternion.

Parameters
valueThe value to be subtracted.

◆ operator/=()

template<class TYPE >
Quaternion& Quaternion< TYPE >::operator/= ( const TYPE &  value)
inlinenoexcept

Divides this quaternion with the specified value.

Parameters
valueThe divisor.

◆ operator=()

template<class TYPE >
Quaternion& Quaternion< TYPE >::operator= ( const Quaternion< TYPE > &  assign)
inlinenoexcept

Assignment of quaternion to quaternion.

◆ operator==()

template<class TYPE >
bool Quaternion< TYPE >::operator== ( const Quaternion< TYPE > &  value) const
inlinenoexcept

Returns true if the quaternions are equal.

Parameters
valueQuaternion to be compared.

◆ plus()

template<class TYPE >
Quaternion Quaternion< TYPE >::plus ( ) const
inlinenoexcept

Unary plus.

◆ setW()

template<class TYPE >
void Quaternion< TYPE >::setW ( const TYPE &  w)
inlinenoexcept

Sets the W coordinate of the quaternion.

Parameters
wThe desired W coordinate.

◆ setX()

template<class TYPE >
void Quaternion< TYPE >::setX ( const TYPE &  x)
inlinenoexcept

Sets the X coordinate of the quaternion.

Parameters
xThe desired X coordinate.

◆ setY()

template<class TYPE >
void Quaternion< TYPE >::setY ( const TYPE &  y)
inlinenoexcept

Sets the Y coordinate of the quaternion.

Parameters
yThe desired Y coordinate.

◆ setZ()

template<class TYPE >
void Quaternion< TYPE >::setZ ( const TYPE &  z)
inlinenoexcept

Sets the Z coordinate of the quaternion.

Parameters
zThe desired Z coordinate.

◆ subtract()

template<class TYPE >
Quaternion& Quaternion< TYPE >::subtract ( const Quaternion< TYPE > &  value)
inlinenoexcept

Subtracts the specified quaternion from this quaternion.

◆ zeroAdjust()

template<class TYPE >
Quaternion& Quaternion< TYPE >::zeroAdjust ( const TYPE &  zero)
inlinenoexcept

Sets values less than the specified value to zero.

Friends And Related Function Documentation

◆ dot()

template<class TYPE >
TYPE dot ( const Quaternion< TYPE > &  left,
const Quaternion< TYPE > &  right 
)
related

Returns the dot product of the two quaternions.

◆ operator*() [1/2]

template<class TYPE >
Quaternion< TYPE > operator* ( const Quaternion< TYPE > &  left,
const TYPE &  right 
)
related

Returns the product of the quaternion and the value.

◆ operator*() [2/2]

template<class TYPE >
Quaternion< TYPE > operator* ( const TYPE &  left,
const Quaternion< TYPE > &  right 
)
related

Returns the product of the quaternion and the value.

◆ operator+()

template<class TYPE >
Quaternion< TYPE > operator+ ( const Quaternion< TYPE > &  left,
const Quaternion< TYPE > &  right 
)
related

Returns the sum of the quaternion.

◆ operator-()

template<class TYPE >
Quaternion< TYPE > operator- ( const Quaternion< TYPE > &  left,
const Quaternion< TYPE > &  right 
)
related

Returns the difference of the quaternion.

◆ operator/()

template<class TYPE >
Quaternion< TYPE > operator/ ( const Quaternion< TYPE > &  left,
const TYPE &  right 
)
related

Returns the result of the quaternion divided by the value.

◆ operator<<()

template<class TYPE >
FormatOutputStream & operator<< ( FormatOutputStream stream,
const Quaternion< TYPE > &  value 
)
related

Writes a string representation of a Quaternion object to a format stream. The format is "(x; y; z; w)".

Member Data Documentation

◆ w

template<class TYPE >
TYPE Quaternion< TYPE >::w = 0
protected

w coordinate.

◆ x

template<class TYPE >
TYPE Quaternion< TYPE >::x = 0
protected

X coordinate.

◆ y

template<class TYPE >
TYPE Quaternion< TYPE >::y = 0
protected

Y coordinate.

◆ z

template<class TYPE >
TYPE Quaternion< TYPE >::z = 0
protected

Z coordinate.