Golias Engine
A C++ 20 'game engine' built with SDL3 with wide platform support.
basis.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <glm/glm.hpp>
4 
5 class Vector3;
6 class Quaternion;
7 
8 class Basis : public glm::mat3 {
9 public:
10  using glm::mat3::mat3;
11 
12  Basis();
13  Basis(float diagonal);
14  Basis(const glm::mat3& m);
15 
16  glm::vec3& operator[](int index);
17  const glm::vec3& operator[](int index) const;
18 
19  Basis transposed() const;
20  void transpose();
21 
22  Basis inverse() const;
23  void invert();
24 
25  float determinant() const;
26 
27  Vector3 xform(const Vector3& v) const;
28  Vector3 xform_inv(const Vector3& v) const;
29 
30  Quaternion to_quaternion() const;
31 
32  static Basis from_quaternion(const Quaternion& q);
33  static Basis from_euler(const Vector3& euler);
34 
35  static const Basis IDENTITY;
36 };
37 
Definition: basis.h:8
Vector3 xform(const Vector3 &v) const
Definition: basis.cpp:36
Vector3 xform_inv(const Vector3 &v) const
Definition: basis.cpp:40
void invert()
Definition: basis.cpp:28
static const Basis IDENTITY
Definition: basis.h:35
Basis()
Definition: basis.cpp:9
void transpose()
Definition: basis.cpp:20
glm::vec3 & operator[](int index)
Definition: basis.cpp:13
float determinant() const
Definition: basis.cpp:32
Basis transposed() const
Definition: basis.cpp:16
static Basis from_euler(const Vector3 &euler)
Definition: basis.cpp:52
static Basis from_quaternion(const Quaternion &q)
Definition: basis.cpp:48
Basis inverse() const
Definition: basis.cpp:24
Quaternion to_quaternion() const
Definition: basis.cpp:44
Definition: quaternion.h:11
Definition: vector3.h:5