aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen/src
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2011-12-23 22:39:32 +0100
committerGravatar Gael Guennebaud <g.gael@free.fr>2011-12-23 22:39:32 +0100
commit8171adb7ff5a550e31e0c49eeb6c7386efec0eb2 (patch)
treed3efbf33f554534aa588168165da21968b57ea1d /Eigen/src
parent67ae94f3a258644cba45c3426bf7f48f91dcc2e1 (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.h5
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());
}