diff --git a/glm/gtx/quaternion.inl b/glm/gtx/quaternion.inl index 0d75f62e..2d1a6c13 100644 --- a/glm/gtx/quaternion.inl +++ b/glm/gtx/quaternion.inl @@ -87,7 +87,7 @@ namespace glm T Vec3Len = sqrt(q.x * q.x + q.y * q.y + q.z * q.z); T QuatLen = sqrt(Vec3Len * Vec3Len + q.w * q.w); T t = atan(Vec3Len, T(q.w)) / Vec3Len; - return detail::tquat(t * q.x, t * q.y, t * q.z, log(QuatLen)); + return detail::tquat(log(QuatLen), t * q.x, t * q.y, t * q.z); } } diff --git a/test/gtx/gtx_quaternion.cpp b/test/gtx/gtx_quaternion.cpp index da052954..1dacc1f2 100644 --- a/test/gtx/gtx_quaternion.cpp +++ b/test/gtx/gtx_quaternion.cpp @@ -87,10 +87,22 @@ int test_rotation() return Error; } +int test_log() +{ + int Error(0); + + glm::quat q; + glm::quat p = glm::log(q); + glm::quat r = glm::exp(p); + + return Error; +} + int main() { int Error(0); + Error += test_log(); Error += test_rotation(); Error += test_quat_fastMix(); Error += test_quat_shortMix();