mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-06-04 18:54:00 +08:00
bug #759: Removed hard-coded double-math from Quaternion::angularDistance.
Some documentation improvements
This commit is contained in:
parent
bbc0ada12a
commit
88aa18df64
@ -204,6 +204,8 @@ class QuaternionBase : public RotationBase<Derived, 3>
|
|||||||
* \li \c Quaternionf for \c float
|
* \li \c Quaternionf for \c float
|
||||||
* \li \c Quaterniond for \c double
|
* \li \c Quaterniond for \c double
|
||||||
*
|
*
|
||||||
|
* \warning Operations interpreting the quaternion as rotation have undefined behavior if the quaternion is not normalized.
|
||||||
|
*
|
||||||
* \sa class AngleAxis, class Transform
|
* \sa class AngleAxis, class Transform
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -345,7 +347,7 @@ class Map<const Quaternion<_Scalar>, _Options >
|
|||||||
|
|
||||||
/** Constructs a Mapped Quaternion object from the pointer \a coeffs
|
/** Constructs a Mapped Quaternion object from the pointer \a coeffs
|
||||||
*
|
*
|
||||||
* The pointer \a coeffs must reference the four coeffecients of Quaternion in the following order:
|
* The pointer \a coeffs must reference the four coefficients of Quaternion in the following order:
|
||||||
* \code *coeffs == {x, y, z, w} \endcode
|
* \code *coeffs == {x, y, z, w} \endcode
|
||||||
*
|
*
|
||||||
* If the template parameter _Options is set to #Aligned, then the pointer coeffs must be aligned. */
|
* If the template parameter _Options is set to #Aligned, then the pointer coeffs must be aligned. */
|
||||||
@ -465,7 +467,7 @@ QuaternionBase<Derived>::_transformVector(Vector3 v) const
|
|||||||
// Note that this algorithm comes from the optimization by hand
|
// Note that this algorithm comes from the optimization by hand
|
||||||
// of the conversion to a Matrix followed by a Matrix/Vector product.
|
// of the conversion to a Matrix followed by a Matrix/Vector product.
|
||||||
// It appears to be much faster than the common algorithm found
|
// It appears to be much faster than the common algorithm found
|
||||||
// in the litterature (30 versus 39 flops). It also requires two
|
// in the literature (30 versus 39 flops). It also requires two
|
||||||
// Vector3 as temporaries.
|
// Vector3 as temporaries.
|
||||||
Vector3 uv = this->vec().cross(v);
|
Vector3 uv = this->vec().cross(v);
|
||||||
uv += uv;
|
uv += uv;
|
||||||
@ -668,10 +670,10 @@ QuaternionBase<Derived>::angularDistance(const QuaternionBase<OtherDerived>& oth
|
|||||||
{
|
{
|
||||||
using std::acos;
|
using std::acos;
|
||||||
using std::abs;
|
using std::abs;
|
||||||
double d = abs(this->dot(other));
|
Scalar d = abs(this->dot(other));
|
||||||
if (d>=1.0)
|
if (d>=Scalar(1))
|
||||||
return Scalar(0);
|
return Scalar(0);
|
||||||
return static_cast<Scalar>(2 * acos(d));
|
return Scalar(2) * acos(d);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user