From 767155a22730d20046b13971da5937b3ee2f901d Mon Sep 17 00:00:00 2001 From: Luc Girod Date: Wed, 23 Apr 2014 01:48:48 +0200 Subject: [PATCH] Recompute up vector in lookAt. --- sweet_matrix.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/sweet_matrix.c b/sweet_matrix.c index 9de4238..b3d9db5 100644 --- a/sweet_matrix.c +++ b/sweet_matrix.c @@ -243,26 +243,28 @@ sweet_matrix_look_at (vec3 pos, vec3 dir, vec3 up) { mat4 m; mat4 t; - vec3 cross; - cross = sweet_vector_cross (up, dir); - cross = sweet_vector_normalize3 (cross); + vec3 side; + side = sweet_vector_cross (up, dir); + side = sweet_vector_normalize3 (side); + up = sweet_vector_cross (side, dir); + up = sweet_vector_normalize3 (up); - m.v[0] = cross.x; + m.v[0] = side.x; m.v[1] = up.x; m.v[2] = -dir.x; m.v[3] = 0; - m.v[4] = cross.y; + m.v[4] = side.y; m.v[5] = up.y; m.v[6] = -dir.y; m.v[7] = 0; - m.v[8] = cross.z; + m.v[8] = side.z; m.v[9] = up.z; m.v[10] = -dir.z; m.v[11] = 0; - m.v[12] = -pos.x * cross.x - pos.y * cross.y - pos.z * cross.z; + m.v[12] = -pos.x * side.x - pos.y * side.y - pos.z * side.z; m.v[13] = -pos.x * up.x - pos.y * up.y - pos.z * up.z; m.v[14] = pos.x * dir.x + pos.y * dir.y + pos.z * dir.z; m.v[15] = 1;