From 1b817e79ee8fbf4d387bae1777f90a11c30271e9 Mon Sep 17 00:00:00 2001 From: Wolfgang Draxinger Date: Sat, 7 Jan 2012 17:24:06 +0100 Subject: inplace mat4x4_invert now possible --- linmath.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'linmath.h') diff --git a/linmath.h b/linmath.h index 9d08448..5e51e3c 100644 --- a/linmath.h +++ b/linmath.h @@ -250,8 +250,9 @@ static inline void mat4x4_transpose(mat4x4 M, mat4x4 N) } } } -static inline void mat4x4_invert(mat4x4 R, mat4x4 M) +static inline void mat4x4_invert(mat4x4 T, mat4x4 M) { + mat4x4 R; R[0][0] = M[1][1]*(M[2][2]*M[3][3] - M[2][3]*M[3][2]) - M[2][1]*(M[1][2]*M[3][3] - M[1][3]*M[3][2]) - M[3][1]*(M[1][3]*M[2][2] - M[1][2]*M[2][3]); R[0][1] = M[0][1]*(M[2][3]*M[3][2] - M[2][2]*M[3][3]) - M[2][1]*(M[0][3]*M[3][2] - M[0][2]*M[3][3]) - M[3][1]*(M[0][2]*M[2][3] - M[0][3]*M[2][2]); R[0][2] = M[0][1]*(M[1][2]*M[3][3] - M[1][3]*M[3][2]) - M[1][1]*(M[0][2]*M[3][3] - M[0][3]*M[3][2]) - M[3][1]*(M[0][3]*M[1][2] - M[0][2]*M[1][3]); @@ -271,6 +272,7 @@ static inline void mat4x4_invert(mat4x4 R, mat4x4 M) R[3][1] = M[0][0]*(M[2][1]*M[3][2] - M[2][2]*M[3][1]) - M[2][0]*(M[0][1]*M[3][2] - M[0][2]*M[3][1]) - M[3][0]*(M[0][2]*M[2][1] - M[0][1]*M[2][2]); R[3][2] = M[0][0]*(M[1][2]*M[3][1] - M[1][1]*M[3][2]) - M[1][0]*(M[0][2]*M[3][1] - M[0][1]*M[3][2]) - M[3][0]*(M[0][1]*M[1][2] - M[0][2]*M[1][1]); R[3][3] = M[0][0]*(M[1][1]*M[2][2] - M[1][2]*M[2][1]) - M[1][0]*(M[0][1]*M[2][2] - M[0][2]*M[2][1]) - M[2][0]*(M[0][2]*M[1][1] - M[0][1]*M[1][2]); + memcpy(T, R, sizeof(T)); } static inline void mat4x4_frustum(mat4x4 M, float l, float r, float b, float t, float n, float f) { -- cgit v1.2.3-54-g00ecf