diff --git a/test/src/test_quat.h b/test/src/test_quat.h index 0ef7ca7..ee9e7dc 100644 --- a/test/src/test_quat.h +++ b/test/src/test_quat.h @@ -708,6 +708,38 @@ TEST_IMPL(GLM_PREFIX, quat_lerpc) { TEST_SUCCESS } +TEST_IMPL(GLM_PREFIX, quat_nlerp) { + versor q1, q2, q3, q4; + vec3 v1 = {10.0f, 0.0f, 0.0f}, v2; + + glm_quatv(q1, glm_rad(30.0f), v1); + glm_quatv(q2, glm_rad(90.0f), v1); + + GLM(quat_nlerp)(q1, q2, 1.0f, q3); + glm_quat_normalize(q2); + ASSERTIFY(test_assert_quat_eq(q2, q3)); + + glm_quatv(q1, glm_rad(30.001f), v1); + glm_quatv(q2, glm_rad(30.002f), v1); + GLM(quat_nlerp)(q1, q2, 0.7f, q3); + glm_quat_lerp(q1, q2, 0.7f, q4); + ASSERTIFY(test_assert_quat_eq(q3, q4)); + + glm_quatv(q1, glm_rad(30.0f), v1); + glm_quatv(q2, glm_rad(90.0f), v1); + GLM(quat_nlerp)(q1, q2, 0.5f, q3); + + glm_quat_axis(q3, v2); + glm_vec3_normalize(v1); + glm_vec3_normalize(v2); + + ASSERT(glm_quat_angle(q3) > glm_rad(30.0f)); + ASSERT(glm_quat_angle(q3) < glm_rad(90.0f)); + ASSERTIFY(test_assert_vec3_eq(v1, v2)) + + TEST_SUCCESS +} + TEST_IMPL(GLM_PREFIX, quat_slerp) { versor q1, q2, q3, q4; vec3 v1 = {10.0f, 0.0f, 0.0f}, v2; diff --git a/test/tests.h b/test/tests.h index 2fe9fc6..be8d5d1 100644 --- a/test/tests.h +++ b/test/tests.h @@ -284,6 +284,7 @@ TEST_DECLARE(glm_quat_mat3) TEST_DECLARE(glm_quat_mat3t) TEST_DECLARE(glm_quat_lerp) TEST_DECLARE(glm_quat_lerpc) +TEST_DECLARE(glm_quat_nlerp) TEST_DECLARE(glm_quat_slerp) TEST_DECLARE(glm_quat_look) TEST_DECLARE(glm_quat_for) @@ -320,6 +321,7 @@ TEST_DECLARE(glmc_quat_mat3) TEST_DECLARE(glmc_quat_mat3t) TEST_DECLARE(glmc_quat_lerp) TEST_DECLARE(glmc_quat_lerpc) +TEST_DECLARE(glmc_quat_nlerp) TEST_DECLARE(glmc_quat_slerp) TEST_DECLARE(glmc_quat_look) TEST_DECLARE(glmc_quat_for) @@ -1006,6 +1008,7 @@ TEST_LIST { TEST_ENTRY(glm_quat_mat3t) TEST_ENTRY(glm_quat_lerp) TEST_ENTRY(glm_quat_lerpc) + TEST_ENTRY(glm_quat_nlerp) TEST_ENTRY(glm_quat_slerp) TEST_ENTRY(glm_quat_look) TEST_ENTRY(glm_quat_for) @@ -1042,6 +1045,7 @@ TEST_LIST { TEST_ENTRY(glmc_quat_mat3t) TEST_ENTRY(glmc_quat_lerp) TEST_ENTRY(glmc_quat_lerpc) + TEST_ENTRY(glmc_quat_nlerp) TEST_ENTRY(glmc_quat_slerp) TEST_ENTRY(glmc_quat_look) TEST_ENTRY(glmc_quat_for)