summaryrefslogtreecommitdiffstats
path: root/src/math
diff options
context:
space:
mode:
Diffstat (limited to 'src/math')
-rw-r--r--src/math/Matrix.h17
-rw-r--r--src/math/math.cpp6
2 files changed, 23 insertions, 0 deletions
diff --git a/src/math/Matrix.h b/src/math/Matrix.h
index 7d8c02ab..5145f0ac 100644
--- a/src/math/Matrix.h
+++ b/src/math/Matrix.h
@@ -204,6 +204,22 @@ public:
m_matrix.at.y = 0.0f;
m_matrix.at.z = 1.0f;
}
+ void SetRotateZOnlyScaled(float angle, float scale) {
+ float c = Cos(angle);
+ float s = Sin(angle);
+
+ m_matrix.right.x = c * scale;
+ m_matrix.right.y = s * scale;
+ m_matrix.right.z = 0.0f;
+
+ m_matrix.up.x = -s * scale;
+ m_matrix.up.y = c * scale;
+ m_matrix.up.z = 0.0f;
+
+ m_matrix.at.x = 0.0f;
+ m_matrix.at.y = 0.0f;
+ m_matrix.at.z = scale;
+ }
void SetRotateZ(float angle){
SetRotateZOnly(angle);
m_matrix.pos.x = 0.0f;
@@ -213,6 +229,7 @@ public:
void SetRotate(float xAngle, float yAngle, float zAngle);
void Rotate(float x, float y, float z);
void RotateX(float x);
+ void RotateZ(float z);
void Reorthogonalise(void);
void CopyOnlyMatrix(CMatrix *other){
diff --git a/src/math/math.cpp b/src/math/math.cpp
index 66260709..0707e3d2 100644
--- a/src/math/math.cpp
+++ b/src/math/math.cpp
@@ -47,6 +47,12 @@ CMatrix::RotateX(float x)
}
void
+CMatrix::RotateZ(float z)
+{
+ Rotate(0.0f, 0.0f, z);
+}
+
+void
CMatrix::Reorthogonalise(void)
{
CVector &r = GetRight();