diff options
Diffstat (limited to 'src/math')
-rw-r--r-- | src/math/Matrix.h | 17 | ||||
-rw-r--r-- | src/math/math.cpp | 6 |
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(); |