From 14ee37b9c55eb5c760a4fa5eba7ad8a289119a75 Mon Sep 17 00:00:00 2001 From: Recep Aslantas Date: Tue, 11 Oct 2016 18:27:13 +0300 Subject: [PATCH] mat4 pick transposed mat3 --- include/cglm-mat.h | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/include/cglm-mat.h b/include/cglm-mat.h index d95dbb5..eeab990 100644 --- a/include/cglm-mat.h +++ b/include/cglm-mat.h @@ -85,6 +85,30 @@ glm_mat4_pick3(mat4 mat, mat3 dest) { dest[2][2] = mat[2][2]; } +/*! + * @brief copy upper-left of mat4 to mat3 (transposed) + * + * the postfix t stands for transpose + * + * @param[in] mat source + * @param[out] dest destination + */ +CGLM_INLINE +void +glm_mat4_pick3t(mat4 mat, mat3 dest) { + dest[0][0] = mat[0][0]; + dest[0][1] = mat[1][0]; + dest[0][2] = mat[2][0]; + + dest[1][0] = mat[0][1]; + dest[1][1] = mat[1][1]; + dest[1][2] = mat[2][1]; + + dest[2][0] = mat[0][2]; + dest[2][1] = mat[1][2]; + dest[2][2] = mat[2][2]; +} + /*! * @brief copy mat3 to mat4's upper-left *