From 26110f83d112357d1e900edfbe17f9e0eacd283e Mon Sep 17 00:00:00 2001 From: Recep Aslantas Date: Tue, 27 Mar 2018 12:35:19 +0300 Subject: [PATCH] euler: fix thetaY in extracting angles --- include/cglm/euler.h | 5 ++--- test/src/test_main.c | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/include/cglm/euler.h b/include/cglm/euler.h index 7417bde..5db7e66 100644 --- a/include/cglm/euler.h +++ b/include/cglm/euler.h @@ -76,7 +76,6 @@ glm_euler_angles(mat4 m, vec3 dest) { m01 = m[0][1]; m11 = m[1][1]; m21 = m[2][1]; m22 = m[2][2]; - thetaY = 0.0f; if (m20 < 1.0f) { if (m20 > -1.0f) { thetaY = asinf(m20); @@ -84,10 +83,11 @@ glm_euler_angles(mat4 m, vec3 dest) { thetaZ = atan2f(-m10, m00); } else { /* m20 == -1 */ /* Not a unique solution */ + thetaY = -CGLM_PI_2; thetaX = -atan2f(m01, m11); thetaZ = 0.0f; } - } else {/* m20 == +1 */ + } else { /* m20 == +1 */ thetaY = CGLM_PI_2; thetaX = atan2f(m01, m11); thetaZ = 0.0f; @@ -98,7 +98,6 @@ glm_euler_angles(mat4 m, vec3 dest) { dest[2] = thetaZ; } - /*! * @brief build rotation matrix from euler angles * diff --git a/test/src/test_main.c b/test/src/test_main.c index 38eb4c2..38d2fe4 100644 --- a/test/src/test_main.c +++ b/test/src/test_main.c @@ -20,7 +20,7 @@ main(int argc, const char * argv[]) { cmocka_unit_test(test_clamp), /* euler */ - cmocka_unit_test(test_euler) + cmocka_unit_test(test_euler) }; return cmocka_run_group_tests(tests, NULL, NULL);