Using variate_generator in Sphere2 random for compatibility with old boost
parent
3fc41d5da3
commit
6df79b8dac
|
@ -22,6 +22,7 @@
|
|||
#include <gtsam/geometry/Point2.h>
|
||||
#include <boost/random/mersenne_twister.hpp>
|
||||
#include <boost/random/uniform_on_sphere.hpp>
|
||||
#include <boost/random/variate_generator.hpp>
|
||||
#include <iostream>
|
||||
|
||||
using namespace std;
|
||||
|
@ -47,7 +48,11 @@ Sphere2 Sphere2::FromPoint3(const Point3& point,
|
|||
Sphere2 Sphere2::Random(boost::mt19937 & rng) {
|
||||
// TODO allow any engine without including all of boost :-(
|
||||
boost::uniform_on_sphere<double> randomDirection(3);
|
||||
vector<double> d = randomDirection(rng);
|
||||
// This variate_generator object is required for versions of boost somewhere
|
||||
// around 1.46, instead of drawing directly using boost::uniform_on_sphere(rng).
|
||||
boost::variate_generator<boost::mt19937&, boost::uniform_on_sphere<double> >
|
||||
generator(rng, randomDirection);
|
||||
vector<double> d = generator();
|
||||
Sphere2 result;
|
||||
result.p_ = Point3(d[0], d[1], d[2]);
|
||||
return result;
|
||||
|
|
|
@ -312,7 +312,7 @@ TEST(Sphere2, localCoordinates_retract_expmap) {
|
|||
|
||||
//*******************************************************************************
|
||||
TEST(Sphere2, Random) {
|
||||
boost::random::mt19937 rng(42);
|
||||
boost::mt19937 rng(42);
|
||||
// Check that is deterministic given same random seed
|
||||
Point3 expected(-0.667578, 0.671447, 0.321713);
|
||||
Point3 actual = Sphere2::Random(rng).point3();
|
||||
|
|
Loading…
Reference in New Issue