Please implement some algorithm for generating uniformly-distributed random orientation; an algorithm is decribed in http://planning.cs.uiuc.edu/node198.html (references Shoemaker's Uniform random rotations from Graphic Gems III). A tentative implementation goes like this (with UnitRandom returning uniform in 0..1): template<typename Scalar> Quaternion<Scalar> UniformRandomRotation(){ Scalar u1=UnitRandom(), u2=UnitRandom(), u3=UnitRandom(); return Quaternion<Scalar>(/*w*/sqrt(u1)*cos(2*M_PI*u3),/*x*/sqrt(1-u1)*sin(2*M_PI*u2),/*y*/sqrt(1-u1)*cos(2*M_PI*u2),/*z*/sqrt(u1)*sin(2*M_PI*u3)); }
Please provide a clean patch with documentation and its respective unit test (added in test/geo_quaternion.cpp) so that it can be integrated quickly. For "UnitRandom" you can use internal::random<Scalar>(0,1); Thanks.
Created attachment 669 [details] Add uniformly random quaternion Would this fit the Eigen coding standards ?
Sorry for the delay, but it's now in devel branch: https://bitbucket.org/eigen/eigen/commits/423d3da0e233/ Summary: Bug 823: add static method to Quaternion for uniform random rotations. https://bitbucket.org/eigen/eigen/commits/5d78b569eac3/ Summary: Fix coding practice in Quaternion::UniformRandom https://bitbucket.org/eigen/eigen/commits/20c444245e5c/ Summary: Rename UniformRandom to UnitRandom.
-- GitLab Migration Automatic Message -- This bug has been migrated to gitlab.com's GitLab instance and has been closed from further activity. You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.com/libeigen/eigen/issues/823.