From 9ac590bc12935f8f210f6e134c4fcdb80f562d03 Mon Sep 17 00:00:00 2001 From: Recep Aslantas Date: Tue, 24 Jan 2017 16:36:24 +0300 Subject: [PATCH] improve rotate vec3 with affine matrix because v and dest may be same vector --- include/cglm-vec.h | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/include/cglm-vec.h b/include/cglm-vec.h index 92ab5fb..4d5490d 100644 --- a/include/cglm-vec.h +++ b/include/cglm-vec.h @@ -428,9 +428,11 @@ glm_vec_rotate(vec3 v, float angle, vec3 axis) { CGLM_INLINE void glm_vec_rotate_m4(mat4 m, vec3 v, vec3 dest) { - dest[0] = m[0][0] * v[0] + m[1][0] * v[1] + m[2][0] * v[2]; - dest[1] = m[0][1] * v[0] + m[1][1] * v[1] + m[2][1] * v[2]; - dest[2] = m[0][2] * v[0] + m[1][2] * v[1] + m[2][2] * v[2]; + vec3 res; + res[0] = m[0][0] * v[0] + m[1][0] * v[1] + m[2][0] * v[2]; + res[1] = m[0][1] * v[0] + m[1][1] * v[1] + m[2][1] * v[2]; + res[2] = m[0][2] * v[0] + m[1][2] * v[1] + m[2][2] * v[2]; + glm_vec_dup(res, dest); } #endif /* cglm_vec_h */