mirror of
https://github.com/recp/cglm.git
synced 2025-10-04 09:08:53 +00:00
tests: tests for affine transforms (continue)
This commit is contained in:
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
}
|
@@ -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
|
||||
}
|
||||
|
19
test/tests.h
19
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)
|
||||
|
@@ -21,7 +21,6 @@
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\test\runner.c" />
|
||||
<ClCompile Include="..\test\src\tests.c" />
|
||||
<ClCompile Include="..\test\src\test_affine.c" />
|
||||
<ClCompile Include="..\test\src\test_bezier.c" />
|
||||
<ClCompile Include="..\test\src\test_cam.c" />
|
||||
<ClCompile Include="..\test\src\test_clamp.c" />
|
||||
|
@@ -14,9 +14,6 @@
|
||||
<ClCompile Include="..\test\runner.c">
|
||||
<Filter>src</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\test\src\test_affine.c">
|
||||
<Filter>src</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\test\src\test_bezier.c">
|
||||
<Filter>src</Filter>
|
||||
</ClCompile>
|
||||
|
Reference in New Issue
Block a user