Golias Engine
A C++ 20 'game engine' built with SDL3 with wide platform support.
quaternion.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <glm/glm.hpp>
4 #include <glm/gtc/quaternion.hpp>
5 #include <glm/gtx/quaternion.hpp>
6 
7 class Vector3;
8 class Basis;
9 class Matrix4;
10 
11 class Quaternion : public glm::quat {
12 public:
13  using glm::quat::quat;
14 
15  Quaternion();
16  Quaternion(float w, float x, float y, float z);
17  Quaternion(const glm::quat& q);
18  Quaternion(const glm::vec3& euler_angles);
19 
20  float& operator[](int index);
21  const float& operator[](int index) const;
22 
23  float length() const;
24 
25  Quaternion normalized() const;
26  void normalize();
27 
28  Quaternion conjugate() const;
29  Quaternion inverse() const;
30 
31  float dot(const Quaternion& other) const;
32 
33  Quaternion slerp(const Quaternion& other, float t) const;
34 
35  Vector3 xform(const Vector3& v) const;
36  Vector3 to_euler() const;
37  Matrix4 to_mat4() const;
38  Basis to_basis() const;
39 
40  static Quaternion from_axis_angle(const Vector3& axis, float angle);
41  static Quaternion from_euler(float pitch, float yaw, float roll);
42  static Quaternion from_euler(const Vector3& euler);
43  static Quaternion look_at(const Vector3& direction, const Vector3& up);
44 
45  static const Quaternion IDENTITY;
46 };
47 
48 
Definition: basis.h:8
Definition: matrix4.h:10
Definition: quaternion.h:11
Quaternion conjugate() const
Definition: quaternion.cpp:30
static Quaternion look_at(const Vector3 &direction, const Vector3 &up)
Definition: quaternion.cpp:74
Vector3 xform(const Vector3 &v) const
Definition: quaternion.cpp:46
Quaternion inverse() const
Definition: quaternion.cpp:34
void normalize()
Definition: quaternion.cpp:26
float length() const
Definition: quaternion.cpp:18
float dot(const Quaternion &other) const
Definition: quaternion.cpp:38
Basis to_basis() const
Definition: quaternion.cpp:58
Matrix4 to_mat4() const
Definition: quaternion.cpp:54
Vector3 to_euler() const
Definition: quaternion.cpp:50
float & operator[](int index)
Definition: quaternion.cpp:15
Quaternion normalized() const
Definition: quaternion.cpp:22
Quaternion()
Definition: quaternion.cpp:10
static const Quaternion IDENTITY
Definition: quaternion.h:45
Quaternion slerp(const Quaternion &other, float t) const
Definition: quaternion.cpp:42
static Quaternion from_euler(float pitch, float yaw, float roll)
Definition: quaternion.cpp:66
static Quaternion from_axis_angle(const Vector3 &axis, float angle)
Definition: quaternion.cpp:62
Definition: vector3.h:5