|
|
@@ -73,16 +73,6 @@ int test_quat_mix()
|
|
|
return Error;
|
|
|
}
|
|
|
|
|
|
-int test_quat_precision()
|
|
|
-{
|
|
|
- int Error = 0;
|
|
|
-
|
|
|
- Error += sizeof(glm::lowp_quat) <= sizeof(glm::mediump_quat) ? 0 : 1;
|
|
|
- Error += sizeof(glm::mediump_quat) <= sizeof(glm::highp_quat) ? 0 : 1;
|
|
|
-
|
|
|
- return Error;
|
|
|
-}
|
|
|
-
|
|
|
int test_quat_normalize()
|
|
|
{
|
|
|
int Error(0);
|
|
|
@@ -204,57 +194,7 @@ int test_quat_slerp()
|
|
|
return Error;
|
|
|
}
|
|
|
|
|
|
-int test_quat_mul()
|
|
|
-{
|
|
|
- int Error = 0;
|
|
|
-
|
|
|
- glm::quat temp1 = glm::normalize(glm::quat(1.0f, glm::vec3(0.0, 1.0, 0.0)));
|
|
|
- glm::quat temp2 = glm::normalize(glm::quat(0.5f, glm::vec3(1.0, 0.0, 0.0)));
|
|
|
-
|
|
|
- glm::vec3 transformed0 = (temp1 * glm::vec3(0.0, 1.0, 0.0) * glm::inverse(temp1));
|
|
|
- glm::vec3 temp4 = temp2 * transformed0 * glm::inverse(temp2);
|
|
|
-
|
|
|
- glm::quat temp5 = glm::normalize(temp1 * temp2);
|
|
|
- glm::vec3 temp6 = temp5 * glm::vec3(0.0, 1.0, 0.0) * glm::inverse(temp5);
|
|
|
-
|
|
|
- glm::quat temp7(1.0f, glm::vec3(0.0, 1.0, 0.0));
|
|
|
-
|
|
|
- temp7 *= temp5;
|
|
|
- temp7 *= glm::inverse(temp5);
|
|
|
-
|
|
|
- Error += glm::any(glm::notEqual(temp7, glm::quat(1.0f, glm::vec3(0.0, 1.0, 0.0)), glm::epsilon<float>())) ? 1 : 0;
|
|
|
-
|
|
|
- return Error;
|
|
|
-}
|
|
|
-
|
|
|
-int test_quat_two_axis_ctr()
|
|
|
-{
|
|
|
- int Error = 0;
|
|
|
-
|
|
|
- glm::quat const q1(glm::vec3(1, 0, 0), glm::vec3(0, 1, 0));
|
|
|
- glm::vec3 const v1 = q1 * glm::vec3(1, 0, 0);
|
|
|
- Error += glm::all(glm::equal(v1, glm::vec3(0, 1, 0), 0.0001f)) ? 0 : 1;
|
|
|
-
|
|
|
- glm::quat const q2 = q1 * q1;
|
|
|
- glm::vec3 const v2 = q2 * glm::vec3(1, 0, 0);
|
|
|
- Error += glm::all(glm::equal(v2, glm::vec3(-1, 0, 0), 0.0001f)) ? 0 : 1;
|
|
|
-
|
|
|
- glm::quat const q3(glm::vec3(1, 0, 0), glm::vec3(-1, 0, 0));
|
|
|
- glm::vec3 const v3 = q3 * glm::vec3(1, 0, 0);
|
|
|
- Error += glm::all(glm::equal(v3, glm::vec3(-1, 0, 0), 0.0001f)) ? 0 : 1;
|
|
|
-
|
|
|
- glm::quat const q4(glm::vec3(0, 1, 0), glm::vec3(0, -1, 0));
|
|
|
- glm::vec3 const v4 = q4 * glm::vec3(0, 1, 0);
|
|
|
- Error += glm::all(glm::equal(v4, glm::vec3(0, -1, 0), 0.0001f)) ? 0 : 1;
|
|
|
-
|
|
|
- glm::quat const q5(glm::vec3(0, 0, 1), glm::vec3(0, 0, -1));
|
|
|
- glm::vec3 const v5 = q5 * glm::vec3(0, 0, 1);
|
|
|
- Error += glm::all(glm::equal(v5, glm::vec3(0, 0, -1), 0.0001f)) ? 0 : 1;
|
|
|
-
|
|
|
- return Error;
|
|
|
-}
|
|
|
-
|
|
|
-int test_quat_mul_vec()
|
|
|
+static int test_quat_mul_vec()
|
|
|
{
|
|
|
int Error(0);
|
|
|
|
|
|
@@ -268,61 +208,29 @@ int test_quat_mul_vec()
|
|
|
return Error;
|
|
|
}
|
|
|
|
|
|
-int test_quat_ctr()
|
|
|
+static int test_mul()
|
|
|
{
|
|
|
- int Error(0);
|
|
|
-
|
|
|
-# if GLM_HAS_TRIVIAL_QUERIES
|
|
|
- // Error += std::is_trivially_default_constructible<glm::quat>::value ? 0 : 1;
|
|
|
- // Error += std::is_trivially_default_constructible<glm::dquat>::value ? 0 : 1;
|
|
|
- // Error += std::is_trivially_copy_assignable<glm::quat>::value ? 0 : 1;
|
|
|
- // Error += std::is_trivially_copy_assignable<glm::dquat>::value ? 0 : 1;
|
|
|
- Error += std::is_trivially_copyable<glm::quat>::value ? 0 : 1;
|
|
|
- Error += std::is_trivially_copyable<glm::dquat>::value ? 0 : 1;
|
|
|
+ int Error = 0;
|
|
|
|
|
|
- Error += std::is_copy_constructible<glm::quat>::value ? 0 : 1;
|
|
|
- Error += std::is_copy_constructible<glm::dquat>::value ? 0 : 1;
|
|
|
-# endif
|
|
|
+ glm::quat temp1 = glm::normalize(glm::quat(1.0f, glm::vec3(0.0, 1.0, 0.0)));
|
|
|
+ glm::quat temp2 = glm::normalize(glm::quat(0.5f, glm::vec3(1.0, 0.0, 0.0)));
|
|
|
|
|
|
-# if GLM_HAS_INITIALIZER_LISTS
|
|
|
- {
|
|
|
- glm::quat A{0, 1, 2, 3};
|
|
|
+ glm::vec3 transformed0 = (temp1 * glm::vec3(0.0, 1.0, 0.0) * glm::inverse(temp1));
|
|
|
+ glm::vec3 temp4 = temp2 * transformed0 * glm::inverse(temp2);
|
|
|
|
|
|
- std::vector<glm::quat> B{
|
|
|
- {0, 1, 2, 3},
|
|
|
- {0, 1, 2, 3}};
|
|
|
- }
|
|
|
-# endif//GLM_HAS_INITIALIZER_LISTS
|
|
|
+ glm::quat temp5 = glm::normalize(temp1 * temp2);
|
|
|
+ glm::vec3 temp6 = temp5 * glm::vec3(0.0, 1.0, 0.0) * glm::inverse(temp5);
|
|
|
|
|
|
- return Error;
|
|
|
-}
|
|
|
+ glm::quat temp7(1.0f, glm::vec3(0.0, 1.0, 0.0));
|
|
|
|
|
|
-int test_size()
|
|
|
-{
|
|
|
- int Error = 0;
|
|
|
+ temp7 *= temp5;
|
|
|
+ temp7 *= glm::inverse(temp5);
|
|
|
|
|
|
- std::size_t const A = sizeof(glm::quat);
|
|
|
- Error += 16 == A ? 0 : 1;
|
|
|
- std::size_t const B = sizeof(glm::dquat);
|
|
|
- Error += 32 == B ? 0 : 1;
|
|
|
- Error += glm::quat().length() == 4 ? 0 : 1;
|
|
|
- Error += glm::dquat().length() == 4 ? 0 : 1;
|
|
|
- Error += glm::quat::length() == 4 ? 0 : 1;
|
|
|
- Error += glm::dquat::length() == 4 ? 0 : 1;
|
|
|
+ Error += glm::any(glm::notEqual(temp7, glm::quat(1.0f, glm::vec3(0.0, 1.0, 0.0)), glm::epsilon<float>())) ? 1 : 0;
|
|
|
|
|
|
return Error;
|
|
|
}
|
|
|
|
|
|
-static int test_constexpr()
|
|
|
-{
|
|
|
-#if GLM_HAS_CONSTEXPR
|
|
|
- static_assert(glm::quat::length() == 4, "GLM: Failed constexpr");
|
|
|
- static_assert(glm::quat(1.0f, glm::vec3(0.0f)).w > 0.0f, "GLM: Failed constexpr");
|
|
|
-#endif
|
|
|
-
|
|
|
- return 0;
|
|
|
-}
|
|
|
-
|
|
|
int test_identity()
|
|
|
{
|
|
|
int Error = 0;
|
|
|
@@ -344,19 +252,14 @@ int main()
|
|
|
{
|
|
|
int Error = 0;
|
|
|
|
|
|
- Error += test_quat_ctr();
|
|
|
+ Error += test_mul();
|
|
|
Error += test_quat_mul_vec();
|
|
|
- Error += test_quat_two_axis_ctr();
|
|
|
- Error += test_quat_mul();
|
|
|
- Error += test_quat_precision();
|
|
|
Error += test_quat_angle();
|
|
|
Error += test_quat_angleAxis();
|
|
|
Error += test_quat_mix();
|
|
|
Error += test_quat_normalize();
|
|
|
Error += test_quat_euler();
|
|
|
Error += test_quat_slerp();
|
|
|
- Error += test_size();
|
|
|
- Error += test_constexpr();
|
|
|
Error += test_identity();
|
|
|
|
|
|
return Error;
|