From 0822d46cd9a133900484558786957b2f438bd82c Mon Sep 17 00:00:00 2001 From: Recep Aslantas Date: Sat, 22 Feb 2020 00:58:04 +0300 Subject: [PATCH] tests: tests for remaining rotations --- test/src/test_affine.h | 98 ++++++++++++++++++++++++++++++++++++++++++ test/src/test_quat.h | 4 +- test/tests.h | 12 ++++++ 3 files changed, 111 insertions(+), 3 deletions(-) diff --git a/test/src/test_affine.h b/test/src/test_affine.h index 16434fd..0f38c75 100644 --- a/test/src/test_affine.h +++ b/test/src/test_affine.h @@ -383,14 +383,112 @@ TEST_IMPL(GLM_PREFIX, rotate_make) { } TEST_IMPL(GLM_PREFIX, rotate) { + mat4 m1 = GLM_MAT4_IDENTITY_INIT, m2 = GLM_MAT4_IDENTITY_INIT; + vec4 v1 = {1.0f, 0.0f, 0.0f, 1.0f}; + + /* 360 deg */ + glm_rotate(m1, GLM_PI_2f, GLM_YUP); + glm_rotate(m1, GLM_PI_2f, GLM_YUP); + glm_rotate(m1, GLM_PI_2f, GLM_YUP); + glm_rotate(m1, GLM_PI_2f, GLM_YUP); + ASSERTIFY(test_assert_mat4_eq(m1, m2)) + + /* rotate X around Y = -Z */ + GLM(rotate)(m1, GLM_PI_2f, GLM_YUP); + glm_mat4_mulv(m1, v1, v1); + + ASSERT(test_eq(v1[0], 0.0f)) + ASSERT(test_eq(v1[1], 0.0f)) + ASSERT(test_eq(v1[2], -1.0f)) + + glm_mat4_identity(m1); + + /* rotate -Z around X = Y */ + GLM(rotate)(m1, GLM_PI_2f, GLM_XUP); + glm_mat4_mulv(m1, v1, v1); + + ASSERT(test_eq(v1[0], 0.0f)) + ASSERT(test_eq(v1[1], 1.0f)) + ASSERT(test_eq(v1[2], 0.0f)) + + glm_mat4_identity(m1); + + /* rotate Y around X = +Z */ + GLM(rotate)(m1, GLM_PI_2f, GLM_XUP); + glm_mat4_mulv(m1, v1, v1); + + ASSERT(test_eq(v1[0], 0.0f)) + ASSERT(test_eq(v1[1], 0.0f)) + ASSERT(test_eq(v1[2], 1.0f)) + TEST_SUCCESS } TEST_IMPL(GLM_PREFIX, rotate_at) { + mat4 m1 = GLM_MAT4_IDENTITY_INIT; + vec4 v1 = {1.0f, 0.0f, 0.0f, 1.0f}; + + GLM(rotate_at)(m1, (vec3){0.5f, 0.0f, 0.0f}, GLM_PI_2f, GLM_YUP); + 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(rotate_at)(m1, GLM_VEC3_ZERO, GLM_PI_2f, GLM_ZUP); + 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); + + v1[0] = 1.0f; + v1[1] = 1.0f; + v1[2] = 1.0f; + + GLM(rotate_at)(m1, GLM_VEC3_ZERO, GLM_PI_2f, GLM_XUP); + 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, rotate_atm) { + mat4 m1 = GLM_MAT4_IDENTITY_INIT; + vec4 v1 = {1.0f, 0.0f, 0.0f, 1.0f}; + + GLM(rotate_atm)(m1, (vec3){0.5f, 0.0f, 0.0f}, GLM_PI_2f, GLM_YUP); + 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(rotate_atm)(m1, GLM_VEC3_ZERO, GLM_PI_2f, GLM_ZUP); + 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(rotate_atm)(m1, GLM_VEC3_ZERO, GLM_PI_2f, GLM_XUP); + 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/src/test_quat.h b/test/src/test_quat.h index 1d93582..0ef7ca7 100644 --- a/test/src/test_quat.h +++ b/test/src/test_quat.h @@ -925,7 +925,7 @@ TEST_IMPL(GLM_PREFIX, quat_rotate) { } TEST_IMPL(GLM_PREFIX, quat_rotate_at) { - mat4 m1 = GLM_MAT4_IDENTITY_INIT, m2; + mat4 m1 = GLM_MAT4_IDENTITY_INIT; versor q1; vec4 v1 = {1.0f, 0.0f, 0.0f, 1.0f}; @@ -938,7 +938,6 @@ TEST_IMPL(GLM_PREFIX, quat_rotate_at) { 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}); @@ -949,7 +948,6 @@ TEST_IMPL(GLM_PREFIX, quat_rotate_at) { ASSERT(test_eq(v1[2], -0.5f)) glm_mat4_identity(m1); - glm_mat4_identity(m2); v1[0] = 1.0f; v1[1] = 1.0f; diff --git a/test/tests.h b/test/tests.h index 07ec651..263c531 100644 --- a/test/tests.h +++ b/test/tests.h @@ -31,6 +31,9 @@ TEST_DECLARE(glm_rotate_x) TEST_DECLARE(glm_rotate_y) TEST_DECLARE(glm_rotate_z) TEST_DECLARE(glm_rotate_make) +TEST_DECLARE(glm_rotate) +TEST_DECLARE(glm_rotate_at) +TEST_DECLARE(glm_rotate_atm) TEST_DECLARE(glmc_translate) TEST_DECLARE(glmc_translate_to) @@ -46,6 +49,9 @@ TEST_DECLARE(glmc_rotate_x) TEST_DECLARE(glmc_rotate_y) TEST_DECLARE(glmc_rotate_z) TEST_DECLARE(glmc_rotate_make) +TEST_DECLARE(glmc_rotate) +TEST_DECLARE(glmc_rotate_at) +TEST_DECLARE(glmc_rotate_atm) /* mat4 */ TEST_DECLARE(glm_mat4_ucopy) @@ -582,6 +588,9 @@ TEST_LIST { TEST_ENTRY(glm_rotate_y) TEST_ENTRY(glm_rotate_z) TEST_ENTRY(glm_rotate_make) + TEST_ENTRY(glm_rotate) + TEST_ENTRY(glm_rotate_at) + TEST_ENTRY(glm_rotate_atm) TEST_ENTRY(glmc_translate) TEST_ENTRY(glmc_translate_to) @@ -597,6 +606,9 @@ TEST_LIST { TEST_ENTRY(glmc_rotate_y) TEST_ENTRY(glmc_rotate_z) TEST_ENTRY(glmc_rotate_make) + TEST_ENTRY(glmc_rotate) + TEST_ENTRY(glmc_rotate_at) + TEST_ENTRY(glmc_rotate_atm) /* mat4 */ TEST_ENTRY(glm_mat4_ucopy)