Fixed quat slerp using mix function when cosTheta close to 1

master
Christophe Riccio ago%!(EXTRA string=13 years)
parent 0b41846700
commit 560b474008
  1. 28
      glm/gtc/quaternion.inl
  2. 1
      readme.txt

@ -451,20 +451,20 @@ namespace detail
T const & a T const & a
) )
{ {
T cosTheta = dot(x, y); T cosTheta = dot(x, y);
if(cosTheta <= epsilon<T>()) if(glm::abs(cosTheta - T(1)) <= epsilon<T>())
{ {
return detail::tquat<T>( return detail::tquat<T>(
mix(x.x, y.x, a), mix(x.x, y.x, a),
mix(x.y, y.y, a), mix(x.y, y.y, a),
mix(x.z, y.z, a), mix(x.z, y.z, a),
mix(x.w, y.w, a)); mix(x.w, y.w, a));
} }
else else
{ {
T angle = acos(cosTheta); T angle = acos(cosTheta);
return (glm::sin((T(1) - a) * angle) * x + glm::sin(a * angle) * y) / glm::sin(angle); return (glm::sin((T(1) - a) * angle) * x + glm::sin(a * angle) * y) / glm::sin(angle);
} }
} }
template <typename T> template <typename T>

@ -44,6 +44,7 @@ GLM 0.9.4.1: 2012-12-17
- Fixed interaction between quaternion and euler angles. - Fixed interaction between quaternion and euler angles.
- Fixed GTC_constants build - Fixed GTC_constants build
- Fixed GTX_multiple - Fixed GTX_multiple
- Fixed quat slerp using mix function when cosTheta close to 1
================================================================================ ================================================================================
GLM 0.9.4.0: 2012-11-18 GLM 0.9.4.0: 2012-11-18

Loading…
Cancel
Save