mirror of
https://github.com/recp/cglm.git
synced 2025-12-26 02:25:02 +00:00
tests: tests for affine transforms (continue)
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user