diff options
author | vimene <vincent.menegaux@gmail.com> | 2023-11-26 06:49:51 +0100 |
---|---|---|
committer | vimene <vincent.menegaux@gmail.com> | 2023-11-26 06:49:51 +0100 |
commit | f63febed2a769d0c55192e192a20b8e39f162932 (patch) | |
tree | f12fef4643e03e93363f902e35d06ef92dd8350d /src/math/mat4.cpp | |
parent | 97f4e5c80483255912b177e6a2557344da499a3e (diff) | |
download | engine-f63febed2a769d0c55192e192a20b8e39f162932.tar.gz |
improved matrices, cube building and command parsing
Diffstat (limited to 'src/math/mat4.cpp')
-rw-r--r-- | src/math/mat4.cpp | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/src/math/mat4.cpp b/src/math/mat4.cpp index 0342fdf..ece42d8 100644 --- a/src/math/mat4.cpp +++ b/src/math/mat4.cpp @@ -12,6 +12,23 @@ Mat4 Mat4::idty() { }; } +Mat4 Mat4::translate(MathVector3 v) { + return { + 1.f, 0.f, 0.f, v.x, + 0.f, 1.f, 0.f, v.y, + 0.f, 0.f, 1.f, v.z, + 0.f, 0.f, 0.f, 1.f, + }; +} +Mat4 Mat4::scale(float fac) { + return { + fac, 0.f, 0.f, 0.f, + 0.f, fac, 0.f, 0.f, + 0.f, 0.f, fac, 0.f, + 0.f, 0.f, 0.f, 1.f, + }; +} + Mat4 Mat4::rot_x(float a) { float c = std::cos(a); float s = std::sin(a); @@ -45,6 +62,19 @@ Mat4 Mat4::rot_z(float a) { }; } +Mat4 Mat4::projection(float aspect_ratio, float min_z, float max_z) { + return {{ + aspect_ratio, 0.f, 0.f, 0.f, + 0.f, -1.f, 0.f, 0.f, + 0.f, 0.f, -2.f / (max_z - min_z), -(max_z + min_z) / (max_z - min_z), + 0.f, 0.f, -1.f, 0.f, + }}; +} + +Mat4 Mat4::operator+() { + return *this; +} + Mat4 Mat4::operator-() { return { -values[ 0], -values[ 1], -values[ 2], -values[ 3], @@ -96,3 +126,12 @@ std::array<MathVector4, 4> Mat4::to_vecs() { { values[ 3], values[ 7], values[11], values[15] }, }}; } + +Mat4 operator*(float fac, Mat4 m) { + return { + fac * m.values[ 0], fac * m.values[ 1], fac * m.values[ 2], fac * m.values[ 3], + fac * m.values[ 4], fac * m.values[ 5], fac * m.values[ 6], fac * m.values[ 7], + fac * m.values[ 8], fac * m.values[ 9], fac * m.values[10], fac * m.values[11], + fac * m.values[12], fac * m.values[13], fac * m.values[14], fac * m.values[15], + }; +} |