From 0c8dc070d5f8440e8cfdeed63bbb6a873a96c2b7 Mon Sep 17 00:00:00 2001 From: Recep Aslantas Date: Sat, 22 Feb 2020 10:29:16 +0300 Subject: [PATCH] tests: tests for affine transforms (continue) --- Makefile.am | 1 - test/src/test_affine.c | 114 ------------------------------- test/src/test_affine.h | 125 ++++++++++++++++++++++++++++++++++ test/tests.h | 19 +++++- win/cglm-test.vcxproj | 1 - win/cglm-test.vcxproj.filters | 3 - 6 files changed, 141 insertions(+), 122 deletions(-) delete mode 100644 test/src/test_affine.c diff --git a/Makefile.am b/Makefile.am index bced060..f755b65 100644 --- a/Makefile.am +++ b/Makefile.am @@ -145,7 +145,6 @@ test_tests_SOURCES=\ test/src/test_cam.c \ test/src/test_clamp.c \ test/src/test_euler.c \ - test/src/test_affine.c \ test/src/test_bezier.c \ test/src/test_struct.c diff --git a/test/src/test_affine.c b/test/src/test_affine.c deleted file mode 100644 index 4f51aea..0000000 --- a/test/src/test_affine.c +++ /dev/null @@ -1,114 +0,0 @@ -/* - * Copyright (c), Recep Aslantas. - * - * MIT License (MIT), http://opensource.org/licenses/MIT - * Full license can be found in the LICENSE file - */ - -#include "test_common.h" - -TEST_IMPL(affine) { - mat4 t1, t2, t3, t4, t5; - - /* test translate is postmultiplied */ - glmc_rotate_make(t1, GLM_PI_4f, GLM_YUP); - glm_translate_make(t2, (vec3){34, 57, 36}); - - glmc_mat4_mul(t1, t2, t3); /* R * T */ - - glm_translate(t1, (vec3){34, 57, 36}); - ASSERTIFY(test_assert_mat4_eq(t1, t3)) - - /* test rotate is postmultiplied */ - glmc_rotate_make(t1, GLM_PI_4f, GLM_YUP); - glm_translate_make(t2, (vec3){34, 57, 36}); - - glmc_mat4_mul(t2, t1, t3); /* T * R */ - - glm_rotate(t2, GLM_PI_4f, GLM_YUP); - ASSERTIFY(test_assert_mat4_eq(t2, t3)) - - /* test scale is postmultiplied */ - glmc_rotate_make(t1, GLM_PI_4f, GLM_YUP); - glm_translate_make(t2, (vec3){34, 57, 36}); - glm_scale_make(t4, (vec3){3, 5, 6}); - - glmc_mat4_mul(t2, t1, t3); /* T * R */ - glmc_mat4_mul(t3, t4, t5); /* T * R * S */ - - glm_scale(t3, (vec3){3, 5, 6}); - ASSERTIFY(test_assert_mat4_eq(t3, t5)) - - /* test translate_x */ - glmc_rotate_make(t1, GLM_PI_4f, GLM_YUP); - glm_translate_make(t2, (vec3){34, 0, 0}); - - glmc_mat4_mul(t1, t2, t3); /* R * T */ - glm_translate_x(t1, 34); - ASSERTIFY(test_assert_mat4_eq(t1, t3)) - - /* test translate_y */ - glmc_rotate_make(t1, GLM_PI_4f, GLM_YUP); - glm_translate_make(t2, (vec3){0, 57, 0}); - - glmc_mat4_mul(t1, t2, t3); /* R * T */ - glm_translate_y(t1, 57); - ASSERTIFY(test_assert_mat4_eq(t1, t3)) - - /* test translate_z */ - glmc_rotate_make(t1, GLM_PI_4f, GLM_YUP); - glm_translate_make(t2, (vec3){0, 0, 36}); - - glmc_mat4_mul(t1, t2, t3); /* R * T */ - glm_translate_z(t1, 36); - ASSERTIFY(test_assert_mat4_eq(t1, t3)) - - /* test rotate_x */ - glmc_rotate_make(t1, GLM_PI_4f, (vec3){1, 0, 0}); - glm_translate_make(t2, (vec3){34, 57, 36}); - - glmc_mat4_mul(t2, t1, t3); /* T * R */ - - glm_rotate_x(t2, GLM_PI_4f, t2); - ASSERTIFY(test_assert_mat4_eq(t2, t3)) - - /* test rotate_y */ - glmc_rotate_make(t1, GLM_PI_4f, (vec3){0, 1, 0}); - glm_translate_make(t2, (vec3){34, 57, 36}); - - glmc_mat4_mul(t2, t1, t3); /* T * R */ - - glm_rotate_y(t2, GLM_PI_4f, t2); - ASSERTIFY(test_assert_mat4_eq(t2, t3)) - - /* test rotate_z */ - glmc_rotate_make(t1, GLM_PI_4f, (vec3){0, 0, 1}); - glm_translate_make(t2, (vec3){34, 57, 36}); - - glmc_mat4_mul(t2, t1, t3); /* T * R */ - - glm_rotate_z(t2, GLM_PI_4f, t2); - ASSERTIFY(test_assert_mat4_eq(t2, t3)) - - /* test rotate */ - glmc_rotate_make(t1, GLM_PI_4f, (vec3){0, 0, 1}); - glm_translate_make(t2, (vec3){34, 57, 36}); - - glmc_mat4_mul(t2, t1, t3); /* T * R */ - glmc_rotate(t2, GLM_PI_4f, (vec3){0, 0, 1}); - - ASSERTIFY(test_assert_mat4_eq(t3, t2)) - - /* test scale_uni */ - glmc_rotate_make(t1, GLM_PI_4f, GLM_YUP); - glm_translate_make(t2, (vec3){34, 57, 36}); - glm_scale_make(t4, (vec3){3, 3, 3}); - - glmc_mat4_mul(t2, t1, t3); /* T * R */ - glmc_mat4_mul(t3, t4, t5); /* T * R * S */ - - glm_scale_uni(t3, 3); - ASSERTIFY(test_assert_mat4_eq(t3, t5)) - - TEST_SUCCESS -} diff --git a/test/src/test_affine.h b/test/src/test_affine.h index 0f38c75..0487716 100644 --- a/test/src/test_affine.h +++ b/test/src/test_affine.h @@ -493,17 +493,142 @@ TEST_IMPL(GLM_PREFIX, rotate_atm) { } TEST_IMPL(GLM_PREFIX, decompose_scalev) { + mat4 m1; + vec3 s1; + + GLM(scale_make)(m1, (vec3){7.0f, 8.0f, 9.0f}); + GLM(decompose_scalev)(m1, s1); + + ASSERT(test_eq(s1[0], 7.0f)) + ASSERT(test_eq(s1[1], 8.0f)) + ASSERT(test_eq(s1[2], 9.0f)) + + GLM(scale)(m1, (vec3){7.0f, 8.0f, 9.0f}); + GLM(decompose_scalev)(m1, s1); + + ASSERT(test_eq(s1[0], 49.0f)) + ASSERT(test_eq(s1[1], 64.0f)) + ASSERT(test_eq(s1[2], 81.0f)) + + glm_rotate(m1, GLM_PI_4f, (vec3){23.0f, 45.0f, 66.0f}); + ASSERT(test_eq(s1[0], 49.0f)) + ASSERT(test_eq(s1[1], 64.0f)) + ASSERT(test_eq(s1[2], 81.0f)) + + glm_translate(m1, (vec3){4.0f, 5.0f, 6.0f}); + ASSERT(test_eq(s1[0], 49.0f)) + ASSERT(test_eq(s1[1], 64.0f)) + ASSERT(test_eq(s1[2], 81.0f)) + TEST_SUCCESS } TEST_IMPL(GLM_PREFIX, uniscaled) { + mat4 m1; + + GLM(scale_make)(m1, (vec3){7.0f, 8.0f, 9.0f}); + ASSERT(!GLM(uniscaled)(m1)) + + GLM(scale_make)(m1, (vec3){7.0f, 7.0f, 7.0f}); + ASSERT(GLM(uniscaled)(m1)) + + glm_rotate(m1, GLM_PI_4f, (vec3){23.0f, 45.0f, 66.0f}); + ASSERT(GLM(uniscaled)(m1)) + + glm_translate(m1, (vec3){4.0f, 5.0f, 6.0f}); + ASSERT(GLM(uniscaled)(m1)) + TEST_SUCCESS } TEST_IMPL(GLM_PREFIX, decompose_rs) { + mat4 m1, m2, r; + vec3 s1; + + GLM(scale_make)(m1, (vec3){7.0f, 8.0f, 9.0f}); + GLM(decompose_rs)(m1, r, s1); + + ASSERT(test_eq(s1[0], 7.0f)) + ASSERT(test_eq(s1[1], 8.0f)) + ASSERT(test_eq(s1[2], 9.0f)) + ASSERTIFY(test_assert_mat4_eq_identity(r)); + + GLM(scale)(m1, (vec3){7.0f, 8.0f, 9.0f}); + GLM(decompose_rs)(m1, r, s1); + + ASSERT(test_eq(s1[0], 49.0f)) + ASSERT(test_eq(s1[1], 64.0f)) + ASSERT(test_eq(s1[2], 81.0f)) + ASSERTIFY(test_assert_mat4_eq_identity(r)); + + glm_rotate(m1, GLM_PI_4f, (vec3){23.0f, 45.0f, 66.0f}); + ASSERT(test_eq(s1[0], 49.0f)) + ASSERT(test_eq(s1[1], 64.0f)) + ASSERT(test_eq(s1[2], 81.0f)) + GLM(decompose_rs)(m1, r, s1); + + glm_mat4_identity(m2); + glm_mat4_mul(m2, r, m2); + glm_scale(m2, s1); + + ASSERTIFY(test_assert_mat4_eq2(m1, m2, 0.00001)); + TEST_SUCCESS } TEST_IMPL(GLM_PREFIX, decompose) { + mat4 m1, m2, r; + vec4 t; + vec3 s; + + GLM(scale_make)(m1, (vec3){7.0f, 8.0f, 9.0f}); + GLM(decompose)(m1, t, r, s); + + ASSERT(test_eq(s[0], 7.0f)) + ASSERT(test_eq(s[1], 8.0f)) + ASSERT(test_eq(s[2], 9.0f)) + ASSERTIFY(test_assert_mat4_eq_identity(r)); + + GLM(scale)(m1, (vec3){7.0f, 8.0f, 9.0f}); + GLM(decompose)(m1, t, r, s); + + ASSERT(test_eq(s[0], 49.0f)) + ASSERT(test_eq(s[1], 64.0f)) + ASSERT(test_eq(s[2], 81.0f)) + ASSERTIFY(test_assert_mat4_eq_identity(r)); + + glm_rotate(m1, GLM_PI_4f, (vec3){23.0f, 45.0f, 66.0f}); + ASSERT(test_eq(s[0], 49.0f)) + ASSERT(test_eq(s[1], 64.0f)) + ASSERT(test_eq(s[2], 81.0f)) + GLM(decompose)(m1, t, r, s); + + glm_mat4_identity(m2); + glm_mat4_mul(m2, r, m2); + glm_scale(m2, s); + + ASSERTIFY(test_assert_mat4_eq2(m1, m2, 0.00001)); + + glm_mat4_identity(m1); + glm_translate(m1, (vec3){56.0f, 13.0f, 90.0f}); + glm_rotate(m1, GLM_PI_4f, (vec3){23.0f, 45.0f, 66.0f}); + glm_scale(m1, (vec3){12.0f, 34.0f, 23.0f}); + + GLM(decompose)(m1, t, r, s); + + ASSERT(test_eq(t[0], 56.0f)) + ASSERT(test_eq(t[1], 13.0f)) + ASSERT(test_eq(t[2], 90.0f)) + + ASSERT(test_eq(s[0], 12.0f)) + ASSERT(test_eq(s[1], 34.0f)) + ASSERT(test_eq(s[2], 23.0f)) + + glm_mat4_identity(m2); + glm_translate(m2, t); + glm_mat4_mul(m2, r, m2); + glm_scale(m2, s); + ASSERTIFY(test_assert_mat4_eq2(m1, m2, 0.00001)); + TEST_SUCCESS } diff --git a/test/tests.h b/test/tests.h index 263c531..37475a8 100644 --- a/test/tests.h +++ b/test/tests.h @@ -34,6 +34,10 @@ TEST_DECLARE(glm_rotate_make) TEST_DECLARE(glm_rotate) TEST_DECLARE(glm_rotate_at) TEST_DECLARE(glm_rotate_atm) +TEST_DECLARE(glm_decompose_scalev) +TEST_DECLARE(glm_uniscaled) +TEST_DECLARE(glm_decompose_rs) +TEST_DECLARE(glm_decompose) TEST_DECLARE(glmc_translate) TEST_DECLARE(glmc_translate_to) @@ -52,6 +56,10 @@ TEST_DECLARE(glmc_rotate_make) TEST_DECLARE(glmc_rotate) TEST_DECLARE(glmc_rotate_at) TEST_DECLARE(glmc_rotate_atm) +TEST_DECLARE(glmc_decompose_scalev) +TEST_DECLARE(glmc_uniscaled) +TEST_DECLARE(glmc_decompose_rs) +TEST_DECLARE(glmc_decompose) /* mat4 */ TEST_DECLARE(glm_mat4_ucopy) @@ -107,8 +115,6 @@ TEST_DECLARE(glmc_mat4_swap_col) TEST_DECLARE(glmc_mat4_swap_row) TEST_DECLARE(glmc_mat4_rmc) -TEST_DECLARE(affine) - /* mat3 */ TEST_DECLARE(glm_mat3_copy) TEST_DECLARE(glm_mat3_identity) @@ -591,6 +597,10 @@ TEST_LIST { TEST_ENTRY(glm_rotate) TEST_ENTRY(glm_rotate_at) TEST_ENTRY(glm_rotate_atm) + TEST_ENTRY(glm_decompose_scalev) + TEST_ENTRY(glm_uniscaled) + TEST_ENTRY(glm_decompose_rs) + TEST_ENTRY(glm_decompose) TEST_ENTRY(glmc_translate) TEST_ENTRY(glmc_translate_to) @@ -609,6 +619,10 @@ TEST_LIST { TEST_ENTRY(glmc_rotate) TEST_ENTRY(glmc_rotate_at) TEST_ENTRY(glmc_rotate_atm) + TEST_ENTRY(glmc_decompose_scalev) + TEST_ENTRY(glmc_uniscaled) + TEST_ENTRY(glmc_decompose_rs) + TEST_ENTRY(glmc_decompose) /* mat4 */ TEST_ENTRY(glm_mat4_ucopy) @@ -664,7 +678,6 @@ TEST_LIST { TEST_ENTRY(glmc_mat4_swap_row) TEST_ENTRY(glmc_mat4_rmc) - TEST_ENTRY(affine) /* mat3 */ TEST_ENTRY(glm_mat3_copy) diff --git a/win/cglm-test.vcxproj b/win/cglm-test.vcxproj index 27a7998..f7ccc91 100644 --- a/win/cglm-test.vcxproj +++ b/win/cglm-test.vcxproj @@ -21,7 +21,6 @@ - diff --git a/win/cglm-test.vcxproj.filters b/win/cglm-test.vcxproj.filters index b84e421..66691ff 100644 --- a/win/cglm-test.vcxproj.filters +++ b/win/cglm-test.vcxproj.filters @@ -14,9 +14,6 @@ src - - src - src