From 026750cae56ff6a3129ec1fa8140fea2213d9ccc Mon Sep 17 00:00:00 2001 From: Recep Aslantas Date: Thu, 26 Jan 2017 12:25:14 +0300 Subject: [PATCH] multiply vec3 with affine transform rotation (mat4) this is may useful for rotate a vec3 with affine transform --- include/cglm-mat.h | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/include/cglm-mat.h b/include/cglm-mat.h index 65784f7..d184489 100644 --- a/include/cglm-mat.h +++ b/include/cglm-mat.h @@ -246,6 +246,23 @@ glm_mat4_mulv(mat4 m, vec4 v, vec4 dest) { #endif } +/*! + * @brief multiply vector with mat4's mat3 part(rotation) + * + * @param[in] m mat4(affine transform) + * @param[in] v vec3 + * @param[out] dest vec3 + */ +CGLM_INLINE +void +glm_mat4_mulv3(mat4 m, vec3 v, vec3 dest) { + 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); +} + /*! * @brief transpose mat4 and store in dest *