From 3d34f2708875180e022a6fa72f0d231b1d747b75 Mon Sep 17 00:00:00 2001 From: Recep Aslantas Date: Mon, 12 Sep 2016 10:49:44 +0300 Subject: [PATCH] rotate around single axis --- include/cglm-affine.h | 54 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/include/cglm-affine.h b/include/cglm-affine.h index c612878..6016615 100644 --- a/include/cglm-affine.h +++ b/include/cglm-affine.h @@ -98,4 +98,58 @@ glm_scale1_self(mat4 m, float s) { m[2][2] *= s; } +CGLM_INLINE +void +glm_rotate_x(mat4 m, float rad, mat4 dest) { + float cosVal; + float sinVal; + mat4 t = GLM_MAT_IDENTITY_4F; + + cosVal = cos(rad); + sinVal = sin(rad); + + t[1][1] = cosVal; + t[1][2] = sinVal; + t[2][1] = -sinVal; + t[2][2] = cosVal; + + glm_mat_mul4(t, m, dest); +} + +CGLM_INLINE +void +glm_rotate_y(mat4 m, float rad, mat4 dest) { + float cosVal; + float sinVal; + mat4 t = GLM_MAT_IDENTITY_4F; + + cosVal = cos(rad); + sinVal = sin(rad); + + t[0][0] = cosVal; + t[0][2] = -sinVal; + t[2][0] = sinVal; + t[2][2] = cosVal; + + glm_mat_mul4(t, m, dest); +} + +CGLM_INLINE +void +glm_rotate_z(mat4 m, float rad, mat4 dest) { + float cosVal; + float sinVal; + mat4 t = GLM_MAT_IDENTITY_4F; + + cosVal = cos(rad); + sinVal = sin(rad); + + t[0][0] = cosVal; + t[0][1] = sinVal; + t[1][0] = -sinVal; + t[1][1] = cosVal; + + glm_mat_mul4(t, m, dest); +} + #endif /* cglm_affine_h */