aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen/src/Geometry/Quaternion.h
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2016-05-20 13:19:52 +0200
committerGravatar Gael Guennebaud <g.gael@free.fr>2016-05-20 13:19:52 +0200
commit7a9d9cde94897f09a5a3640f431bc94f78265776 (patch)
treeef824adac1e5390f834676956b2f5f0e1ceb14ef /Eigen/src/Geometry/Quaternion.h
parenteb0cc2573a7561ab85bf6698f2bf5162c11c8681 (diff)
Fix coding practice in Quaternion::UniformRandom
Diffstat (limited to 'Eigen/src/Geometry/Quaternion.h')
-rw-r--r--Eigen/src/Geometry/Quaternion.h22
1 files changed, 10 insertions, 12 deletions
diff --git a/Eigen/src/Geometry/Quaternion.h b/Eigen/src/Geometry/Quaternion.h
index babfc86a9..c7fcaf940 100644
--- a/Eigen/src/Geometry/Quaternion.h
+++ b/Eigen/src/Geometry/Quaternion.h
@@ -611,24 +611,22 @@ inline Derived& QuaternionBase<Derived>::setFromTwoVectors(const MatrixBase<Deri
return derived();
}
-/** Returns a random quaternion following a uniform distribution law.
- *
- * \returns resulting quaternion
+/** \returns a random unit quaternion following a uniform distribution law on SO(3)
*
* \note The implementation is based on http://planning.cs.uiuc.edu/node198.html
*/
template<typename Scalar, int Options>
Quaternion<Scalar,Options> Quaternion<Scalar,Options>::UniformRandom()
{
- const Scalar u1 = internal::random<Scalar>(0,1),
- u2 = internal::random<Scalar>(0, 2*M_PI),
- u3 = internal::random<Scalar>(0, 2*M_PI);
- const Scalar a = std::sqrt (1 - u1),
- b = std::sqrt (u1);
- return Quaternion (a * std::sin (u2),
- a * std::cos (u2),
- b * std::sin (u3),
- b * std::cos (u3));
+ using std::sqrt;
+ using std::sin;
+ using std::cos;
+ const Scalar u1 = internal::random<Scalar>(0, 1),
+ u2 = internal::random<Scalar>(0, 2*EIGEN_PI),
+ u3 = internal::random<Scalar>(0, 2*EIGEN_PI);
+ const Scalar a = sqrt(1 - u1),
+ b = sqrt(u1);
+ return Quaternion (a * sin(u2), a * cos(u2), b * sin(u3), b * cos(u3));
}