mirror of https://github.com/CGAL/cgal
Merge pull request #6069 from sloriot/PMP-rnd_np
Add random generator np for sampling
This commit is contained in:
commit
cdf33d4ff9
|
|
@ -438,6 +438,7 @@ struct Triangle_structure_sampler_for_triangle_mesh
|
||||||
Vpm pmap;
|
Vpm pmap;
|
||||||
double min_sq_edge_length;
|
double min_sq_edge_length;
|
||||||
const Mesh& tm;
|
const Mesh& tm;
|
||||||
|
CGAL::Random rnd;
|
||||||
|
|
||||||
Triangle_structure_sampler_for_triangle_mesh(const Mesh& m,
|
Triangle_structure_sampler_for_triangle_mesh(const Mesh& m,
|
||||||
PointOutputIterator& out,
|
PointOutputIterator& out,
|
||||||
|
|
@ -446,9 +447,12 @@ struct Triangle_structure_sampler_for_triangle_mesh
|
||||||
{
|
{
|
||||||
using parameters::choose_parameter;
|
using parameters::choose_parameter;
|
||||||
using parameters::get_parameter;
|
using parameters::get_parameter;
|
||||||
|
using parameters::is_default_parameter;
|
||||||
|
|
||||||
pmap = choose_parameter(get_parameter(np, internal_np::vertex_point),
|
pmap = choose_parameter(get_parameter(np, internal_np::vertex_point),
|
||||||
get_const_property_map(vertex_point, tm));
|
get_const_property_map(vertex_point, tm));
|
||||||
|
if (!(is_default_parameter(get_parameter(np, internal_np::random_seed))))
|
||||||
|
rnd = CGAL::Random(choose_parameter(get_parameter(np, internal_np::random_seed),0));
|
||||||
min_sq_edge_length = (std::numeric_limits<double>::max)();
|
min_sq_edge_length = (std::numeric_limits<double>::max)();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -549,7 +553,7 @@ struct Triangle_structure_sampler_for_triangle_mesh
|
||||||
|
|
||||||
Randomizer get_randomizer()
|
Randomizer get_randomizer()
|
||||||
{
|
{
|
||||||
return Randomizer(tm, pmap);
|
return Randomizer(tm, pmap, rnd);
|
||||||
}
|
}
|
||||||
|
|
||||||
void internal_sample_triangles(double grid_spacing_, bool smpl_fcs, bool smpl_dgs)
|
void internal_sample_triangles(double grid_spacing_, bool smpl_fcs, bool smpl_dgs)
|
||||||
|
|
@ -609,6 +613,7 @@ struct Triangle_structure_sampler_for_triangle_soup
|
||||||
double min_sq_edge_length;
|
double min_sq_edge_length;
|
||||||
const PointRange& points;
|
const PointRange& points;
|
||||||
const TriangleRange& triangles;
|
const TriangleRange& triangles;
|
||||||
|
Random rnd;
|
||||||
|
|
||||||
Triangle_structure_sampler_for_triangle_soup(const PointRange& pts,
|
Triangle_structure_sampler_for_triangle_soup(const PointRange& pts,
|
||||||
const TriangleRange& trs,
|
const TriangleRange& trs,
|
||||||
|
|
@ -616,7 +621,13 @@ struct Triangle_structure_sampler_for_triangle_soup
|
||||||
const NamedParameters& np)
|
const NamedParameters& np)
|
||||||
: Base(out, np), points(pts), triangles(trs)
|
: Base(out, np), points(pts), triangles(trs)
|
||||||
{
|
{
|
||||||
|
using parameters::choose_parameter;
|
||||||
|
using parameters::get_parameter;
|
||||||
|
using parameters::is_default_parameter;
|
||||||
|
|
||||||
min_sq_edge_length = (std::numeric_limits<double>::max)();
|
min_sq_edge_length = (std::numeric_limits<double>::max)();
|
||||||
|
if (!(is_default_parameter(get_parameter(np, internal_np::random_seed))))
|
||||||
|
rnd = CGAL::Random(choose_parameter(get_parameter(np, internal_np::random_seed),0));
|
||||||
}
|
}
|
||||||
|
|
||||||
std::pair<TriangleIterator, TriangleIterator> get_range()
|
std::pair<TriangleIterator, TriangleIterator> get_range()
|
||||||
|
|
@ -681,7 +692,7 @@ struct Triangle_structure_sampler_for_triangle_soup
|
||||||
|
|
||||||
Randomizer get_randomizer()
|
Randomizer get_randomizer()
|
||||||
{
|
{
|
||||||
return Randomizer(triangles, points);
|
return Randomizer(triangles, points, rnd);
|
||||||
}
|
}
|
||||||
|
|
||||||
void internal_sample_triangles(double distance, bool, bool)
|
void internal_sample_triangles(double distance, bool, bool)
|
||||||
|
|
@ -737,6 +748,12 @@ struct Triangle_structure_sampler_for_triangle_soup
|
||||||
* \cgalParamExtra{The geometric traits class must be compatible with the vertex point type.}
|
* \cgalParamExtra{The geometric traits class must be compatible with the vertex point type.}
|
||||||
* \cgalParamNEnd
|
* \cgalParamNEnd
|
||||||
*
|
*
|
||||||
|
* \cgalParamNBegin{random_seed}
|
||||||
|
* \cgalParamDescription{a value to seed the random number generator}
|
||||||
|
* \cgalParamType{unsigned int}
|
||||||
|
* \cgalParamDefault{a value generated with `std::time()`}
|
||||||
|
* \cgalParamNEnd
|
||||||
|
*
|
||||||
* \cgalParamNBegin{use_random_uniform_sampling}
|
* \cgalParamNBegin{use_random_uniform_sampling}
|
||||||
* \cgalParamDescription{If `true` is passed, points are generated uniformly at random on faces and/or edges of `tm`.
|
* \cgalParamDescription{If `true` is passed, points are generated uniformly at random on faces and/or edges of `tm`.
|
||||||
If `do_sample_faces` is `true`, random points will be iteratively generated uniformly at random in the triangle of a face
|
If `do_sample_faces` is `true`, random points will be iteratively generated uniformly at random in the triangle of a face
|
||||||
|
|
@ -898,6 +915,12 @@ sample_triangle_mesh(const TriangleMesh& tm,
|
||||||
* \cgalParamExtra{The geometric traits class must be compatible with the point range's point type.}
|
* \cgalParamExtra{The geometric traits class must be compatible with the point range's point type.}
|
||||||
* \cgalParamNEnd
|
* \cgalParamNEnd
|
||||||
*
|
*
|
||||||
|
* \cgalParamNBegin{random_seed}
|
||||||
|
* \cgalParamDescription{a value to seed the random number generator}
|
||||||
|
* \cgalParamType{unsigned int}
|
||||||
|
* \cgalParamDefault{a value generated with `std::time()`}
|
||||||
|
* \cgalParamNEnd
|
||||||
|
*
|
||||||
* \cgalParamNBegin{use_random_uniform_sampling}
|
* \cgalParamNBegin{use_random_uniform_sampling}
|
||||||
* \cgalParamDescription{If `true` is passed, points are generated in a random and uniform way
|
* \cgalParamDescription{If `true` is passed, points are generated in a random and uniform way
|
||||||
* over the triangles of the soup.}
|
* over the triangles of the soup.}
|
||||||
|
|
|
||||||
|
|
@ -269,7 +269,7 @@ void general_tests(const TriangleMesh& m1,
|
||||||
<< "\n";
|
<< "\n";
|
||||||
|
|
||||||
std::vector<typename GeomTraits::Point_3> samples;
|
std::vector<typename GeomTraits::Point_3> samples;
|
||||||
PMP::sample_triangle_mesh(m1, std::back_inserter(samples));
|
PMP::sample_triangle_mesh(m1, std::back_inserter(samples), CGAL::parameters::random_seed(0));
|
||||||
std::cout << samples.size()<<" points sampled on mesh."<<std::endl;
|
std::cout << samples.size()<<" points sampled on mesh."<<std::endl;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue