diff --git a/glm/gtx/quaternion.hpp b/glm/gtx/quaternion.hpp index 84949d68..3c9e8b04 100644 --- a/glm/gtx/quaternion.hpp +++ b/glm/gtx/quaternion.hpp @@ -94,8 +94,7 @@ namespace glm /// @see gtx_quaternion template detail::tquat exp( - detail::tquat const & q, - valType const & exponent); + detail::tquat const & q); //! Returns a log of a quaternion. /// diff --git a/glm/gtx/quaternion.inl b/glm/gtx/quaternion.inl index b3880355..32155ce5 100644 --- a/glm/gtx/quaternion.inl +++ b/glm/gtx/quaternion.inl @@ -40,7 +40,7 @@ namespace glm detail::tquat const & s2, T const & h) { - return mix(mix(q1, q2, h), mix(s1, s2, h), T(2) * h (T(1) - h)); + return mix(mix(q1, q2, h), mix(s1, s2, h), T(2) * (T(1) - h) * h); } template @@ -52,20 +52,19 @@ namespace glm ) { detail::tquat invQuat = inverse(curr); - return ext((log(next + invQuat) + log(prev + invQuat)) / T(-4)) * curr; + return exp((log(next + invQuat) + log(prev + invQuat)) / T(-4)) * curr; } template GLM_FUNC_QUALIFIER detail::tquat exp ( - detail::tquat const & q, - T const & exponent + detail::tquat const & q ) { detail::tvec3 u(q.x, q.y, q.z); - float a = glm::length(u); - detail::tvec3 v(u / a); - return detail::tquat(cos(a), sin(a) * v); + float Angle = glm::length(u); + detail::tvec3 v(u / Angle); + return detail::tquat(cos(Angle), sin(Angle) * v); } template