From a12364d4861471b6f3ed19120a5ac349ce656120 Mon Sep 17 00:00:00 2001 From: Recep Aslantas Date: Fri, 31 Jul 2020 18:20:51 +0300 Subject: [PATCH] 2d: fix rotate2d and its friends --- include/cglm/affine2d.h | 54 +++++++++++++++++++++++------------------ 1 file changed, 30 insertions(+), 24 deletions(-) diff --git a/include/cglm/affine2d.h b/include/cglm/affine2d.h index c332dd8..d0abfdf 100644 --- a/include/cglm/affine2d.h +++ b/include/cglm/affine2d.h @@ -188,13 +188,13 @@ glm_rotate2d_make(mat3 m, float angle) { s = sinf(angle); c = cosf(angle); - m[0][0] = m[0][0] * c + m[1][0] * s; - m[0][1] = m[0][1] * c + m[1][1] * s; - m[0][2] = m[0][2] * c + m[1][2] * s; - - m[1][0] = m[0][0] * -s + m[1][0] * c; - m[1][1] = m[0][1] * -s + m[1][1] * c; - m[1][2] = m[0][2] * -s + m[1][2] * c; + m[0][0] = c; + m[0][1] = s; + m[0][2] = 0; + + m[1][0] = -s; + m[1][1] = c; + m[1][2] = 0; m[2][0] = 0.0f; m[2][1] = 0.0f; @@ -210,18 +210,21 @@ glm_rotate2d_make(mat3 m, float angle) { CGLM_INLINE void glm_rotate2d(mat3 m, float angle) { + float m00 = m[0][0], m10 = m[1][0], + m01 = m[0][1], m11 = m[1][1], + m02 = m[0][2], m12 = m[1][2]; float c, s; s = sinf(angle); c = cosf(angle); - m[0][0] = m[0][0] * c + m[1][0] * s; - m[0][1] = m[0][1] * c + m[1][1] * s; - m[0][2] = m[0][2] * c + m[1][2] * s; - - m[1][0] = m[0][0] * -s + m[1][0] * c; - m[1][1] = m[0][1] * -s + m[1][1] * c; - m[1][2] = m[0][2] * -s + m[1][2] * c; + m[0][0] = m00 * c + m10 * s; + m[0][1] = m01 * c + m11 * s; + m[0][2] = m02 * c + m12 * s; + + m[1][0] = m00 * -s + m10 * c; + m[1][1] = m01 * -s + m11 * c; + m[1][2] = m02 * -s + m12 * c; } /*! @@ -235,22 +238,25 @@ glm_rotate2d(mat3 m, float angle) { CGLM_INLINE void glm_rotate2d_to(mat3 m, float angle, mat3 dest) { + float m00 = m[0][0], m10 = m[1][0], + m01 = m[0][1], m11 = m[1][1], + m02 = m[0][2], m12 = m[1][2]; float c, s; s = sinf(angle); c = cosf(angle); - dest[0][0] = m[0][0] * c + m[1][0] * s; - dest[0][1] = m[0][1] * c + m[1][1] * s; - dest[0][2] = m[0][2] * c + m[1][2] * s; + dest[0][0] = m00 * c + m10 * s; + dest[0][1] = m01 * c + m11 * s; + dest[0][2] = m02 * c + m12 * s; + + dest[1][0] = m00 * -s + m10 * c; + dest[1][1] = m01 * -s + m11 * c; + dest[1][2] = m02 * -s + m12 * c; - dest[1][0] = m[0][0] * -s + m[1][0] * c; - dest[1][1] = m[0][1] * -s + m[1][1] * c; - dest[1][2] = m[0][2] * -s + m[1][2] * c; - - dest[2][0] = m[0][0]; - dest[2][1] = m[0][1]; - dest[2][2] = m[0][2]; + dest[2][0] = m[2][0]; + dest[2][1] = m[2][1]; + dest[2][2] = m[2][2]; } #endif /* cglm_affine2d_h */