summary refs log tree commit diff
path: root/src/Math
diff options
context:
space:
mode:
authorMel <einebeere@gmail.com>2023-07-11 04:52:24 +0200
committerMel <einebeere@gmail.com>2023-07-11 04:52:24 +0200
commit0ce26f2a49fd6d64a690b84b1932126edfbfbee6 (patch)
treef0846f7f0e394d3c213986a2f85e0240dc8e5402 /src/Math
parente6812d2df6bd8a0a71375096abe46f8039d8c570 (diff)
downloadmeowcraft-0ce26f2a49fd6d64a690b84b1932126edfbfbee6.tar.zst
meowcraft-0ce26f2a49fd6d64a690b84b1932126edfbfbee6.zip
Add simple scrolling non-tiling 2D clouds
Diffstat (limited to 'src/Math')
-rw-r--r--src/Math/MVP.hpp5
-rw-r--r--src/Math/Matrix.hpp9
2 files changed, 12 insertions, 2 deletions
diff --git a/src/Math/MVP.hpp b/src/Math/MVP.hpp
index 4046a50..b7341a8 100644
--- a/src/Math/MVP.hpp
+++ b/src/Math/MVP.hpp
@@ -5,11 +5,12 @@
 namespace Math::MVP {
 
 template<typename T = Real>
-Matrix<4, 4, T> model(Vector<3> position, Rotation angles) {
+Matrix<4, 4, T> model(Vector<3> position, Vector<3> size, Rotation angles) {
     auto transformation = Matrix<4, 4, T>::transformation(position);
+    auto scale = Matrix<4, 4, T>::scale(size);
     auto rotation = Matrix<4, 4, T>::rotation(angles);
 
-    return transformation * rotation;
+    return transformation * rotation * scale;
 }
 
 template<typename T = Real>
diff --git a/src/Math/Matrix.hpp b/src/Math/Matrix.hpp
index d51d171..41d3661 100644
--- a/src/Math/Matrix.hpp
+++ b/src/Math/Matrix.hpp
@@ -37,6 +37,15 @@ struct Matrix {
         };
     }
 
+    static Matrix<4, 4, T> scale(Vector<3> factor) {
+        return {
+            factor.x(), 0.0, 0.0, 0.0,
+            0.0, factor.y(), 0.0, 0.0,
+            0.0, 0.0, factor.z(), 0.0,
+            0.0, 0.0, 0.0, 1.0
+        };
+    }
+
     static Matrix<4, 4, T> rotation(Rotation angles) {
         auto radians = angles.vector.map([](auto a) { return Math::radians(a); });