Golias Engine
A C++ 20 'game engine' built with SDL3 with wide platform support.
matrix4.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <glm/glm.hpp>
4 #include <glm/gtc/matrix_transform.hpp>
5 
6 class Vector3;
7 class Quaternion;
8 class Basis;
9 
10 class Matrix4 : public glm::mat4 {
11 public:
12  using glm::mat4::mat4;
13 
14  Matrix4();
15  Matrix4(float diagonal);
16  Matrix4(const glm::mat4& m);
17 
18  glm::vec4& operator[](int index);
19  const glm::vec4& operator[](int index) const;
20 
21  Matrix4 transposed() const;
22  void transpose();
23 
24  Matrix4 inverse() const;
25  void invert();
26 
27  float determinant() const;
28 
29  Vector3 xform(const Vector3& v) const;
30  Vector3 xform_inv(const Vector3& v) const;
31  Vector3 xform_normal(const Vector3& normal) const;
32 
33  Basis get_basis() const;
34  Vector3 get_translation() const;
35  Quaternion to_quaternion() const;
36 
37  static Matrix4 translate(const Vector3& translation);
38  static Matrix4 rotate(float angle, const Vector3& axis);
39  static Matrix4 scale(const Vector3& scale_vec);
40  static Matrix4 look_at(const Vector3& eye, const Vector3& center, const Vector3& up);
41  static Matrix4 perspective(float fov, float aspect, float near_plane, float far_plane);
42  static Matrix4 ortho(float left, float right, float bottom, float top, float near_plane, float far_plane);
43  static Matrix4 from_quaternion(const Quaternion& q);
44 
45  static const Matrix4 IDENTITY;
46 };
47 
48 
Definition: basis.h:8
Definition: matrix4.h:10
void invert()
Definition: matrix4.cpp:29
Matrix4()
Definition: matrix4.cpp:10
float determinant() const
Definition: matrix4.cpp:33
Vector3 xform(const Vector3 &v) const
Definition: matrix4.cpp:37
static Matrix4 perspective(float fov, float aspect, float near_plane, float far_plane)
Definition: matrix4.cpp:80
static Matrix4 from_quaternion(const Quaternion &q)
Definition: matrix4.cpp:88
Vector3 xform_normal(const Vector3 &normal) const
Definition: matrix4.cpp:47
Vector3 get_translation() const
Definition: matrix4.cpp:56
static Matrix4 ortho(float left, float right, float bottom, float top, float near_plane, float far_plane)
Definition: matrix4.cpp:84
glm::vec4 & operator[](int index)
Definition: matrix4.cpp:14
static Matrix4 rotate(float angle, const Vector3 &axis)
Definition: matrix4.cpp:68
Quaternion to_quaternion() const
Definition: matrix4.cpp:60
static Matrix4 scale(const Vector3 &scale_vec)
Definition: matrix4.cpp:72
static Matrix4 look_at(const Vector3 &eye, const Vector3 &center, const Vector3 &up)
Definition: matrix4.cpp:76
Matrix4 transposed() const
Definition: matrix4.cpp:17
void transpose()
Definition: matrix4.cpp:21
Matrix4 inverse() const
Definition: matrix4.cpp:25
static Matrix4 translate(const Vector3 &translation)
Definition: matrix4.cpp:64
Vector3 xform_inv(const Vector3 &v) const
Definition: matrix4.cpp:42
static const Matrix4 IDENTITY
Definition: matrix4.h:45
Basis get_basis() const
Definition: matrix4.cpp:52
Definition: quaternion.h:11
Definition: vector3.h:5