StevEngine
StevEngine is a customizable C++ game engine.
Loading...
Searching...
No Matches
Matrix4.hpp
1#pragma once
2#include "utilities/Quaternion.hpp"
3#include "utilities/Vector4.hpp"
4
5namespace StevEngine::Utilities {
12 class Matrix4 {
13 public:
18 Matrix4(double data[4][4]);
19
27 Matrix4(const Vector4& row1, const Vector4& row2, const Vector4& row3, const Vector4& row4);
28
33 Matrix4(const Matrix4& matrix);
34
39 Matrix4(double v);
40
42 Matrix4();
43
49 Vector4 GetRow(int i) const;
50
56 Vector4 GetColumn(int i) const;
57
62 double GetDeterminant() const;
63
69
75 static Matrix4 Inverse(const Matrix4& matrix);
76
82
88 static Matrix4 Transpose(const Matrix4& matrix);
89
90 //Operators
91 Matrix4& operator= (const Matrix4& other);
92 Matrix4 operator* (const Matrix4& matrix) const;
93 Vector3 operator* (const Vector3& point) const;
94 Matrix4 operator* (const double& value) const;
95 Matrix4 operator/ (const double& value) const;
96 bool operator== (const Matrix4& other) const;
97
98 //Conversions
99 explicit operator std::string() const;
100 const float* data() const;
101
102 //Static creators
108 static Matrix4 FromTranslation(const Vector3& position);
109
115 static Matrix4 FromRotation(const Quaternion& rotation);
116
122 static Matrix4 FromScale(const Vector3& scale);
123
131 static Matrix4 FromTranslationRotationScale(const Vector3& position, const Quaternion& rotation, const Vector3& scale);
132
141 static Matrix4 FromOrthographic(float width, float height, float clipNear, float clipFar);
142
153 static Matrix4 FromOrthographic(float left, float right, float bottom, float top, float clipNear, float clipFar);
154
163 static Matrix4 FromPerspective(float fovx, float aspect, float clipNear, float clipFar);
164
165 //Static matrices
166 static const Matrix4 identity;
167 static const Matrix4 zero;
168
169 private:
170 double raw[4][4];
171 };
172}
static Matrix4 FromScale(const Vector3 &scale)
Create scale matrix.
Definition Matrix4.cpp:254
static Matrix4 FromTranslationRotationScale(const Vector3 &position, const Quaternion &rotation, const Vector3 &scale)
Create combined TRS matrix.
Definition Matrix4.cpp:262
bool operator==(const Matrix4 &other) const
Equality comparison.
Definition Matrix4.cpp:208
static Matrix4 FromTranslation(const Vector3 &position)
Create translation matrix.
Definition Matrix4.cpp:238
static Matrix4 FromPerspective(float fovx, float aspect, float clipNear, float clipFar)
Create perspective projection.
Definition Matrix4.cpp:288
static const Matrix4 identity
Identity matrix.
Definition Matrix4.hpp:166
static const Matrix4 zero
Zero matrix.
Definition Matrix4.hpp:167
static Matrix4 FromOrthographic(float width, float height, float clipNear, float clipFar)
Create orthographic projection.
Definition Matrix4.cpp:272
Matrix4 operator*(const Matrix4 &matrix) const
Matrix multiplication.
Definition Matrix4.cpp:174
Matrix4 & Transpose()
Transpose this matrix.
Definition Matrix4.cpp:148
Vector4 GetRow(int i) const
Get row vector.
Definition Matrix4.cpp:44
Vector4 GetColumn(int i) const
Get column vector.
Definition Matrix4.cpp:47
static Matrix4 FromRotation(const Quaternion &rotation)
Create rotation matrix.
Definition Matrix4.cpp:246
const float * data() const
Get raw float array.
Definition Matrix4.cpp:228
Matrix4 & operator=(const Matrix4 &other)
Assignment.
Definition Matrix4.cpp:166
Matrix4 operator/(const double &value) const
Scalar division.
Definition Matrix4.cpp:199
Matrix4(double data[4][4])
Create matrix from raw 4x4 array.
Definition Matrix4.cpp:12
double GetDeterminant() const
Calculate matrix determinant.
Definition Matrix4.cpp:64
Matrix4()
Create identity matrix.
Definition Matrix4.cpp:42
Matrix4 & Inverse()
Invert this matrix.
Definition Matrix4.cpp:93
Quaternion for 3D rotations.
Definition Quaternion.hpp:19
3D vector class
Definition Vector3.hpp:19
4D vector class
Definition Vector4.hpp:14