diff options
author | Peter Kohaut | 2016-09-10 18:16:17 +0200 |
---|---|---|
committer | Eugene Sandulenko | 2016-09-29 22:33:40 +0200 |
commit | b67bca20b5db7f3d6473341efd7fabfa6532f465 (patch) | |
tree | 6fbbd28dc707dac1c3cacde2e8622cceea6d1b0f /engines/bladerunner/matrix.cpp | |
parent | 2888d0b3460cdca2dd52f8d6aa94b429d46345ad (diff) | |
download | scummvm-rg350-b67bca20b5db7f3d6473341efd7fabfa6532f465.tar.gz scummvm-rg350-b67bca20b5db7f3d6473341efd7fabfa6532f465.tar.bz2 scummvm-rg350-b67bca20b5db7f3d6473341efd7fabfa6532f465.zip |
BLADERUNNER: Pull in changes from madmoose
Diffstat (limited to 'engines/bladerunner/matrix.cpp')
-rw-r--r-- | engines/bladerunner/matrix.cpp | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/engines/bladerunner/matrix.cpp b/engines/bladerunner/matrix.cpp index fae8e43d19..db4d4d5f9a 100644 --- a/engines/bladerunner/matrix.cpp +++ b/engines/bladerunner/matrix.cpp @@ -166,16 +166,20 @@ Matrix4x3 invertMatrix(const Matrix4x3 &m) return result; } - void Matrix4x3::unknown() { - float m14 = _m[0][3]; - float m24 = _m[1][3]; - float m34 = _m[2][3]; + Matrix4x3 t; - _m[0][3] = -(m34 * _m[0][2]) - m24 * _m[0][1] - m14 * _m[0][0]; - _m[1][3] = -(m34 * _m[1][2]) - m24 * _m[1][1] - m14 * _m[1][0]; - _m[2][3] = -(m34 * _m[2][2]) - m24 * _m[2][1] - m14 * _m[2][0]; + // Transpose the 3x3 top left submatrix + for (int r = 0; r != 3; ++r) + for (int c = 0; c != 3; ++c) + t(r, c) = _m[c][r]; + t(0,3) = -(_m[0][3] * _m[0][0] + _m[1][3] * _m[1][0] + _m[2][3] * _m[2][0]); + t(1,3) = -(_m[0][3] * _m[0][1] + _m[1][3] * _m[1][1] + _m[2][3] * _m[2][1]); + t(2,3) = -(_m[0][3] * _m[0][2] + _m[1][3] * _m[1][2] + _m[2][3] * _m[2][2]); + + *this = t; } + } // End of namespace BladeRunner |