From 789895b4b9f99668b8b772f271d07d1ce3115742 Mon Sep 17 00:00:00 2001 From: chai Date: Fri, 5 Oct 2018 15:40:31 +0800 Subject: *update --- src/libjin/Math/Matrix.cpp | 17 +++++++++++++++++ src/libjin/Math/Matrix.h | 6 ++++++ 2 files changed, 23 insertions(+) (limited to 'src/libjin/Math') diff --git a/src/libjin/Math/Matrix.cpp b/src/libjin/Math/Matrix.cpp index 39042f0..a80f37a 100644 --- a/src/libjin/Math/Matrix.cpp +++ b/src/libjin/Math/Matrix.cpp @@ -8,6 +8,8 @@ namespace jin namespace math { + const Matrix Matrix::Identity; + // | e0 e4 e8 e12 | // | e1 e5 e9 e13 | // | e2 e6 e10 e14 | @@ -22,6 +24,21 @@ namespace math { } + void Matrix::setOrtho(float l, float r, float b, float t, float n, float f) + { + float w = r - l; + float h = t - b; + float z = f - n; + setIdentity(); + e[0] = 2 / w; + e[5] = 2 / h; + e[10] = -2 / z; + e[12] = -(r + l) / w; + e[13] = -(t + b) / h; + e[14] = -(f + n) / z; + e[15] = 1; + } + // | e0 e4 e8 e12 | // | e1 e5 e9 e13 | // | e2 e6 e10 e14 | diff --git a/src/libjin/Math/Matrix.h b/src/libjin/Math/Matrix.h index b9a55d4..52fc9c8 100644 --- a/src/libjin/Math/Matrix.h +++ b/src/libjin/Math/Matrix.h @@ -16,6 +16,8 @@ namespace math * This class is the basis for all transformations in LOVE. Althought not * really needed for 2D, it contains 4x4 elements to be compatible with * OpenGL without conversions. + * 不需要转置的矩阵 + * https://blog.csdn.net/candycat1992/article/details/8830894 **/ class Matrix { @@ -31,6 +33,8 @@ namespace math public: + static const Matrix Identity; + /** * Creates a new identity matrix. **/ @@ -41,6 +45,8 @@ namespace math **/ ~Matrix(); + void setOrtho(float _left, float _right, float _bottom, float _top, float _near, float _far); + /** * Multiplies this Matrix with another Matrix, changing neither. * @param m The Matrix to multiply with this Matrix. -- cgit v1.1-26-g67d0