From de85a4eb2bf458de9fd0ae760140e28267057372 Mon Sep 17 00:00:00 2001 From: Recep Aslantas Date: Fri, 21 Feb 2020 14:28:41 +0300 Subject: [PATCH] quat: add tests for quat_rotate_at[m] --- test/src/test_quat.h | 70 ++++++++++++++++++++++++++++++++++++++++++++ test/tests.h | 8 +++++ 2 files changed, 78 insertions(+) diff --git a/test/src/test_quat.h b/test/src/test_quat.h index 8037b7d..15c81e3 100644 --- a/test/src/test_quat.h +++ b/test/src/test_quat.h @@ -925,9 +925,79 @@ TEST_IMPL(GLM_PREFIX, quat_rotate) { } TEST_IMPL(GLM_PREFIX, quat_rotate_at) { + mat4 m1 = GLM_MAT4_IDENTITY_INIT, m2; + versor q1; + vec4 v1 = {1.0f, 0.0f, 0.0f, 1.0f}; + + glm_quatv(q1, GLM_PI_2f, GLM_YUP); + GLM(quat_rotate_at)(m1, q1, (vec3){0.5f, 0.0f, 0.0f}); + glm_mat4_mulv(m1, v1, v1); + + ASSERT(test_eq(v1[0], 0.5f)) + ASSERT(test_eq(v1[1], 0.0f)) + ASSERT(test_eq(v1[2], -0.5f)) + + glm_mat4_identity(m1); + glm_mat4_identity(m2); + + glm_quatv(q1, GLM_PI_2f, GLM_ZUP); + GLM(quat_rotate_at)(m1, q1, (vec3){0.0f, 0.0f, 0.0f}); + glm_mat4_mulv(m1, v1, v1); + + ASSERT(test_eq(v1[0], 0.0f)) + ASSERT(test_eq(v1[1], 0.5f)) + ASSERT(test_eq(v1[2], -0.5f)) + + glm_mat4_identity(m1); + glm_mat4_identity(m2); + + v1[0] = 1.0f; + v1[1] = 1.0f; + v1[2] = 1.0f; + + glm_quatv(q1, GLM_PI_2f, GLM_XUP); + GLM(quat_rotate_at)(m1, q1, GLM_VEC3_ZERO); + glm_mat4_mulv(m1, v1, v1); + + ASSERT(test_eq(v1[0], 1.0f)) + ASSERT(test_eq(v1[1], -1.0f)) + ASSERT(test_eq(v1[2], 1.0f)) + TEST_SUCCESS } TEST_IMPL(GLM_PREFIX, quat_rotate_atm) { + mat4 m1 = GLM_MAT4_IDENTITY_INIT, m2; + versor q1; + vec4 v1 = {1.0f, 0.0f, 0.0f, 1.0f}; + + glm_quatv(q1, GLM_PI_2f, GLM_YUP); + GLM(quat_rotate_atm)(m1, q1, (vec3){0.5f, 0.0f, 0.0f}); + glm_mat4_mulv(m1, v1, v1); + + ASSERT(test_eq(v1[0], 0.5f)) + ASSERT(test_eq(v1[1], 0.0f)) + ASSERT(test_eq(v1[2], -0.5f)) + + glm_quatv(q1, GLM_PI_2f, GLM_ZUP); + GLM(quat_rotate_atm)(m1, q1, (vec3){0.0f, 0.0f, 0.0f}); + glm_mat4_mulv(m1, v1, v1); + + ASSERT(test_eq(v1[0], 0.0f)) + ASSERT(test_eq(v1[1], 0.5f)) + ASSERT(test_eq(v1[2], -0.5f)) + + v1[0] = 1.0f; + v1[1] = 1.0f; + v1[2] = 1.0f; + + glm_quatv(q1, GLM_PI_2f, GLM_XUP); + GLM(quat_rotate_atm)(m1, q1, GLM_VEC3_ZERO); + glm_mat4_mulv(m1, v1, v1); + + ASSERT(test_eq(v1[0], 1.0f)) + ASSERT(test_eq(v1[1], -1.0f)) + ASSERT(test_eq(v1[2], 1.0f)) + TEST_SUCCESS } diff --git a/test/tests.h b/test/tests.h index f7d957b..eb3362b 100644 --- a/test/tests.h +++ b/test/tests.h @@ -167,6 +167,8 @@ TEST_DECLARE(glm_quat_for) TEST_DECLARE(glm_quat_forp) TEST_DECLARE(glm_quat_rotatev) TEST_DECLARE(glm_quat_rotate) +TEST_DECLARE(glm_quat_rotate_at) +TEST_DECLARE(glm_quat_rotate_atm) TEST_DECLARE(glmc_quat_identity) TEST_DECLARE(glmc_quat_identity_array) @@ -201,6 +203,8 @@ TEST_DECLARE(glmc_quat_for) TEST_DECLARE(glmc_quat_forp) TEST_DECLARE(glmc_quat_rotatev) TEST_DECLARE(glmc_quat_rotate) +TEST_DECLARE(glmc_quat_rotate_at) +TEST_DECLARE(glmc_quat_rotate_atm) /* bezier */ TEST_DECLARE(bezier) @@ -683,6 +687,8 @@ TEST_LIST { TEST_ENTRY(glm_quat_forp) TEST_ENTRY(glm_quat_rotatev) TEST_ENTRY(glm_quat_rotate) + TEST_ENTRY(glm_quat_rotate_at) + TEST_ENTRY(glm_quat_rotate_atm) TEST_ENTRY(glmc_quat_identity) TEST_ENTRY(glmc_quat_identity_array) @@ -717,6 +723,8 @@ TEST_LIST { TEST_ENTRY(glmc_quat_forp) TEST_ENTRY(glmc_quat_rotatev) TEST_ENTRY(glmc_quat_rotate) + TEST_ENTRY(glmc_quat_rotate_at) + TEST_ENTRY(glmc_quat_rotate_atm) /* bezier */ TEST_ENTRY(bezier)