summaryrefslogtreecommitdiff
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); });