SleakEngine 1.0.0
C++23 multi-backend game engine
Loading...
Searching...
No Matches
Sleak::Math::Quaternion Class Reference

Represents a quaternion for 3D rotations. More...

#include <Quaternion.hpp>

Public Member Functions

 Quaternion ()
 Quaternion (const Matrix< float, 4, 4 > &matrix)
 Quaternion (const Vector3D &axis, float angle)
 Quaternion (float w, float x, float y, float z)
Quaternion conjugate () const
float GetW () const
float GetX () const
float GetY () const
float GetZ () const
Quaternion inverse () const
float magnitude () const
void normalize ()
Quaternion operator* (const Quaternion &other) const
Quaternionoperator*= (const Quaternion &other)
Quaternion operator- () const
float & operator[] (int index)
const float & operator[] (int index) const
Vector3D rotateVector (const Vector3D &vec) const
Matrix< float, 4, 4 > toRotationMatrix () const

Static Public Member Functions

static Quaternion LookRotation (Vector3D &forward, Vector3D &up)

Public Attributes

float w
float x
float y
float z

Detailed Description

Represents a quaternion for 3D rotations.

Quaternions provide a more robust and efficient way to represent rotations compared to Euler angles, avoiding issues like gimbal lock.

This class provides functionalities for creating, manipulating, and using quaternions for various 3D rotation operations.

Definition at line 26 of file Quaternion.hpp.

Constructor & Destructor Documentation

◆ Quaternion() [1/4]

Sleak::Math::Quaternion::Quaternion ( )

Definition at line 9 of file Quaternion.cpp.

◆ Quaternion() [2/4]

Sleak::Math::Quaternion::Quaternion ( float w,
float x,
float y,
float z )

Definition at line 11 of file Quaternion.cpp.

◆ Quaternion() [3/4]

Sleak::Math::Quaternion::Quaternion ( const Vector3D & axis,
float angle )

Definition at line 14 of file Quaternion.cpp.

◆ Quaternion() [4/4]

Sleak::Math::Quaternion::Quaternion ( const Matrix< float, 4, 4 > & matrix)

Definition at line 24 of file Quaternion.cpp.

Member Function Documentation

◆ conjugate()

Quaternion Sleak::Math::Quaternion::conjugate ( ) const

Definition at line 117 of file Quaternion.cpp.

◆ GetW()

float Sleak::Math::Quaternion::GetW ( ) const

Definition at line 98 of file Quaternion.cpp.

◆ GetX()

float Sleak::Math::Quaternion::GetX ( ) const

Definition at line 95 of file Quaternion.cpp.

◆ GetY()

float Sleak::Math::Quaternion::GetY ( ) const

Definition at line 96 of file Quaternion.cpp.

◆ GetZ()

float Sleak::Math::Quaternion::GetZ ( ) const

Definition at line 97 of file Quaternion.cpp.

◆ inverse()

Quaternion Sleak::Math::Quaternion::inverse ( ) const

Definition at line 122 of file Quaternion.cpp.

◆ LookRotation()

Quaternion Sleak::Math::Quaternion::LookRotation ( Vector3D & forward,
Vector3D & up )
static

Definition at line 165 of file Quaternion.cpp.

◆ magnitude()

float Sleak::Math::Quaternion::magnitude ( ) const

Definition at line 112 of file Quaternion.cpp.

◆ normalize()

void Sleak::Math::Quaternion::normalize ( )

Definition at line 101 of file Quaternion.cpp.

◆ operator*()

Quaternion Sleak::Math::Quaternion::operator* ( const Quaternion & other) const

Definition at line 77 of file Quaternion.cpp.

◆ operator*=()

Quaternion & Sleak::Math::Quaternion::operator*= ( const Quaternion & other)

Definition at line 86 of file Quaternion.cpp.

◆ operator-()

Quaternion Sleak::Math::Quaternion::operator- ( ) const

Definition at line 91 of file Quaternion.cpp.

◆ operator[]() [1/2]

float & Sleak::Math::Quaternion::operator[] ( int index)

Definition at line 56 of file Quaternion.cpp.

◆ operator[]() [2/2]

const float & Sleak::Math::Quaternion::operator[] ( int index) const

Definition at line 66 of file Quaternion.cpp.

◆ rotateVector()

Vector3D Sleak::Math::Quaternion::rotateVector ( const Vector3D & vec) const

Definition at line 132 of file Quaternion.cpp.

◆ toRotationMatrix()

Matrix4 Sleak::Math::Quaternion::toRotationMatrix ( ) const

Definition at line 139 of file Quaternion.cpp.

Member Data Documentation

◆ w

float Sleak::Math::Quaternion::w

Definition at line 28 of file Quaternion.hpp.

◆ x

float Sleak::Math::Quaternion::x

Definition at line 29 of file Quaternion.hpp.

◆ y

float Sleak::Math::Quaternion::y

Definition at line 30 of file Quaternion.hpp.

◆ z

float Sleak::Math::Quaternion::z

Definition at line 31 of file Quaternion.hpp.