build rot using euler angles vector [x, y, z]

This commit is contained in:
Recep Aslantas
2016-10-24 22:07:13 +03:00
parent 025d7f4267
commit 41cfa78442

View File

@@ -137,6 +137,40 @@ glm_euler(float pitch,
dest[3][3] = 1.0f;
}
/*!
* @brief build rotation matrix from euler angles(xyz)
*
* @param[in] angles angles as vector [x, y, z]
* @param[out] dest rotation matrix
*/
CGLM_INLINE
void
glm_eulerv(vec3 angles, mat4 dest) {
float cx, cy, cz,
sx, sy, sz;
sx = sinf(angles[0]); cx = cosf(angles[0]);
sy = sinf(angles[1]); cy = cosf(angles[1]);
sz = sinf(angles[2]); cz = cosf(angles[2]);
dest[0][0] = cy * cz;
dest[0][1] = cz * sx * sy + cx * sz;
dest[0][2] =-cx * cz * sy + sx * sz;
dest[1][0] =-cy * sz;
dest[1][1] = cx * cz - sx * sy * sz;
dest[1][2] = cz * sx + cx * sy * sz;
dest[2][0] = sy;
dest[2][1] =-cy * sx;
dest[2][2] = cx * cy;
dest[0][3] = 0.0f;
dest[1][3] = 0.0f;
dest[2][3] = 0.0f;
dest[3][0] = 0.0f;
dest[3][1] = 0.0f;
dest[3][2] = 0.0f;
dest[3][3] = 1.0f;
}
/*!
* @brief build rotation matrix from euler angles (zyx)
*/