diff --git a/test/gtx/gtx_quaternion.cpp b/test/gtx/gtx_quaternion.cpp index a6daf715..398adaee 100644 --- a/test/gtx/gtx_quaternion.cpp +++ b/test/gtx/gtx_quaternion.cpp @@ -90,7 +90,24 @@ int test_log() return Error; } -int main() +int test_quatLookAt() +{ + int Error(0); + + glm::vec3 eye(0.0f); + glm::vec3 center(1.1f, -2.0f, 3.1416f); + glm::vec3 up = glm::vec3(-0.17f, 7.23f, -1.744f); + + glm::quat test_quat = glm::quatLookAt(center - eye, up); + glm::quat test_mat = glm::conjugate(glm::quat_cast(glm::lookAt(eye, center, up))); + + Error += static_cast(glm::abs(glm::length(test_quat) - 1.0f) > glm::epsilon()); + Error += static_cast(glm::min(glm::length(test_quat + (-test_mat)), glm::length(test_quat + test_mat)) > glm::epsilon()); + + return Error; +} + +int main1() { int Error = 0; @@ -98,6 +115,7 @@ int main() Error += test_rotation(); Error += test_quat_fastMix(); Error += test_quat_shortMix(); + Error += test_quatLookAt(); return Error; }