diff options
author | Gael Guennebaud <g.gael@free.fr> | 2011-12-23 22:39:32 +0100 |
---|---|---|
committer | Gael Guennebaud <g.gael@free.fr> | 2011-12-23 22:39:32 +0100 |
commit | 8171adb7ff5a550e31e0c49eeb6c7386efec0eb2 (patch) | |
tree | d3efbf33f554534aa588168165da21968b57ea1d /Eigen/src | |
parent | 67ae94f3a258644cba45c3426bf7f48f91dcc2e1 (diff) |
fix bug #398, the quaternion returned by slerp was not always normalized,
add a proper unit test for slerp
Diffstat (limited to 'Eigen/src')
-rw-r--r-- | Eigen/src/Geometry/Quaternion.h | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/Eigen/src/Geometry/Quaternion.h b/Eigen/src/Geometry/Quaternion.h index 5a9a45c25..ce6faecd9 100644 --- a/Eigen/src/Geometry/Quaternion.h +++ b/Eigen/src/Geometry/Quaternion.h @@ -688,7 +688,7 @@ QuaternionBase<Derived>::slerp(Scalar t, const QuaternionBase<OtherDerived>& oth Scalar scale0; Scalar scale1; - if (absD>=one) + if(absD>=one) { scale0 = Scalar(1) - t; scale1 = t; @@ -701,9 +701,8 @@ QuaternionBase<Derived>::slerp(Scalar t, const QuaternionBase<OtherDerived>& oth scale0 = internal::sin( ( Scalar(1) - t ) * theta) / sinTheta; scale1 = internal::sin( ( t * theta) ) / sinTheta; - if (d<0) - scale1 = -scale1; } + if(d<0) scale1 = -scale1; return Quaternion<Scalar>(scale0 * coeffs() + scale1 * other.coeffs()); } |