From 6fb8866d9339189d44cbdc76b7fd5c6021f67003 Mon Sep 17 00:00:00 2001 From: Recep Aslantas Date: Sun, 30 Oct 2016 16:39:06 +0200 Subject: [PATCH] fix rotate --- include/cglm-affine.h | 34 +++++++++++++++++++--------------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/include/cglm-affine.h b/include/cglm-affine.h index bf211cb..213894c 100644 --- a/include/cglm-affine.h +++ b/include/cglm-affine.h @@ -261,23 +261,27 @@ glm_rotate_ndc(mat4 m, float angle, vec3 axis_ndc) { glm_rotate_ndc_make(rot, angle, axis_ndc); - glm_vec4_scale(m[0], rot[0][0], v1); - glm_vec4_scale(m[1], rot[0][1], v2); - glm_vec4_scale(m[2], rot[0][2], v3); - glm_vec4_add(v1, v2, m[0]); - glm_vec4_add(v3, m[0], m[0]); + glm_vec4_scale(m[0], rot[0][0], tmp[1]); + glm_vec4_scale(m[1], rot[0][1], tmp[0]); + glm_vec4_add(tmp[1], tmp[0], tmp[1]); + glm_vec4_scale(m[2], rot[0][2], tmp[0]); + glm_vec4_add(tmp[1], tmp[0], tmp[1]); - glm_vec4_scale(m[0], rot[1][0], v1); - glm_vec4_scale(m[1], rot[1][1], v2); - glm_vec4_scale(m[2], rot[1][2], v3); - glm_vec4_add(v1, v2, m[1]); - glm_vec4_add(v3, m[1], m[1]); + glm_vec4_scale(m[0], rot[1][0], tmp[2]); + glm_vec4_scale(m[1], rot[1][1], tmp[0]); + glm_vec4_add(tmp[2], tmp[0], tmp[2]); + glm_vec4_scale(m[2], rot[1][2], tmp[0]); + glm_vec4_add(tmp[2], tmp[0], tmp[2]); - glm_vec4_scale(m[0], rot[2][0], v1); - glm_vec4_scale(m[1], rot[2][1], v2); - glm_vec4_scale(m[2], rot[2][2], v3); - glm_vec4_add(v1, v2, m[2]); - glm_vec4_add(v3, m[2], m[2]); + glm_vec4_scale(m[0], rot[2][0], tmp[3]); + glm_vec4_scale(m[1], rot[2][1], tmp[0]); + glm_vec4_add(tmp[3], tmp[0], tmp[3]); + glm_vec4_scale(m[2], rot[2][2], tmp[0]); + glm_vec4_add(tmp[3], tmp[0], tmp[3]); + + glm_vec4_dup(tmp[1], m[0]); + glm_vec4_dup(tmp[2], m[1]); + glm_vec4_dup(tmp[3], m[2]); } CGLM_INLINE