SleakEngine
0.1.0
C++23 multi-backend game engine
Toggle main menu visibility
Loading...
Searching...
No Matches
Quaternion.hpp
Go to the documentation of this file.
1
#ifndef _QUATERNION_H_
2
#define _QUATERNION_H_
3
4
#include <
Math/Vector.hpp
>
5
#include <
Utility/Exception.hpp
>
6
7
namespace
Sleak
{
8
namespace
Math
{
9
10
/**
11
* @class Quaternion
12
* @brief Represents a quaternion for 3D rotations.
13
*
14
* Quaternions provide a more robust and efficient way to represent rotations
15
* compared to Euler angles, avoiding issues like gimbal lock.
16
*
17
* This class provides functionalities for creating, manipulating, and
18
* using quaternions for various 3D rotation operations.
19
* @ingroup math
20
*/
21
22
//Forward Declare
23
template
<
typename
T,
size_t
Rows,
size_t
Cols>
24
class
Matrix
;
25
26
class
Quaternion
{
27
public
:
28
float
w
;
// Scalar component
29
float
x
;
// Vector component (i)
30
float
y
;
// Vector component (j)
31
float
z
;
// Vector component (k)
32
33
// Constructors
34
Quaternion
();
35
Quaternion
(
float
w
,
float
x
,
float
y
,
float
z
);
36
Quaternion
(
const
Vector3D
& axis,
float
angle);
37
Quaternion
(
const
Matrix<float, 4, 4>
& matrix);
38
39
// Accessors and Mutators
40
float
&
operator[]
(
int
index);
41
const
float
&
operator[]
(
int
index)
const
;
42
43
// Quaternion Operations
44
Quaternion
operator*
(
const
Quaternion
& other)
const
;
45
Quaternion
&
operator*=
(
const
Quaternion
& other);
46
Quaternion
operator-
()
const
;
47
48
float
GetX
()
const
;
49
float
GetY
()
const
;
50
float
GetZ
()
const
;
51
float
GetW
()
const
;
52
53
// Normalize the quaternion
54
void
normalize
();
55
56
// Calculate the magnitude of the quaternion
57
float
magnitude
()
const
;
58
59
// Calculate the conjugate of the quaternion
60
Quaternion
conjugate
()
const
;
61
62
// Calculate the inverse of the quaternion
63
Quaternion
inverse
()
const
;
64
65
// Rotate a vector by this quaternion
66
Vector3D
rotateVector
(
const
Vector3D
& vec)
const
;
67
68
// Conversion to Rotation Matrix
69
Matrix<float, 4, 4>
toRotationMatrix
()
const
;
70
71
// Static method for look rotation
72
static
Quaternion
LookRotation
(
Vector3D
& forward,
Vector3D
& up);
73
private
:
74
};
75
76
// Free function for quaternion-vector multiplication
77
Vector3D
operator*
(
const
Quaternion
& quat,
const
Vector3D
& vec);
78
79
}
// namespace Math
80
}
// namespace Sleak
81
82
#endif
// _QUATERNION_H_
Exception.hpp
Vector.hpp
Sleak::Math::Matrix
Definition
Matrix.hpp:20
Sleak::Math::Quaternion
Represents a quaternion for 3D rotations.
Definition
Quaternion.hpp:26
Sleak::Math::Quaternion::magnitude
float magnitude() const
Definition
Quaternion.cpp:112
Sleak::Math::Quaternion::z
float z
Definition
Quaternion.hpp:31
Sleak::Math::Quaternion::y
float y
Definition
Quaternion.hpp:30
Sleak::Math::Quaternion::Quaternion
Quaternion()
Definition
Quaternion.cpp:9
Sleak::Math::Quaternion::operator*
Quaternion operator*(const Quaternion &other) const
Definition
Quaternion.cpp:77
Sleak::Math::Quaternion::conjugate
Quaternion conjugate() const
Definition
Quaternion.cpp:117
Sleak::Math::Quaternion::GetX
float GetX() const
Definition
Quaternion.cpp:95
Sleak::Math::Quaternion::operator*=
Quaternion & operator*=(const Quaternion &other)
Definition
Quaternion.cpp:86
Sleak::Math::Quaternion::normalize
void normalize()
Definition
Quaternion.cpp:101
Sleak::Math::Quaternion::rotateVector
Vector3D rotateVector(const Vector3D &vec) const
Definition
Quaternion.cpp:132
Sleak::Math::Quaternion::GetY
float GetY() const
Definition
Quaternion.cpp:96
Sleak::Math::Quaternion::LookRotation
static Quaternion LookRotation(Vector3D &forward, Vector3D &up)
Definition
Quaternion.cpp:165
Sleak::Math::Quaternion::w
float w
Definition
Quaternion.hpp:28
Sleak::Math::Quaternion::operator[]
float & operator[](int index)
Definition
Quaternion.cpp:56
Sleak::Math::Quaternion::GetZ
float GetZ() const
Definition
Quaternion.cpp:97
Sleak::Math::Quaternion::x
float x
Definition
Quaternion.hpp:29
Sleak::Math::Quaternion::toRotationMatrix
Matrix< float, 4, 4 > toRotationMatrix() const
Definition
Quaternion.cpp:139
Sleak::Math::Quaternion::GetW
float GetW() const
Definition
Quaternion.cpp:98
Sleak::Math::Quaternion::operator-
Quaternion operator-() const
Definition
Quaternion.cpp:91
Sleak::Math::Quaternion::inverse
Quaternion inverse() const
Definition
Quaternion.cpp:122
Sleak::Math::Vector3D
Definition
Vector.hpp:354
Sleak::Math
Vectors, matrices, quaternions, colors, AABBs, and random helpers.
Definition
GameObject.hpp:13
Sleak::Math::operator*
Vector3D operator*(const Quaternion &quat, const Vector3D &vec)
Definition
Quaternion.cpp:181
Sleak
Root namespace for everything the engine exposes.
Definition
Camera.hpp:10
include
public
Math
Quaternion.hpp
Generated on
for SleakEngine by
1.18.0