make the random generator seeding integer a named parameter

This commit is contained in:
Jane Tournois 2017-06-09 12:08:04 +02:00
parent bb040bd24b
commit faadf52a54
2 changed files with 13 additions and 9 deletions

View File

@ -44,8 +44,10 @@ CGAL_add_named_parameter(number_of_points_per_edge_t, number_of_points_per_edge,
CGAL_add_named_parameter(number_of_points_on_edges_t, number_of_points_on_edges, number_of_points_on_edges)
CGAL_add_named_parameter(nb_points_per_area_unit_t, nb_points_per_area_unit, number_of_points_per_area_unit)
CGAL_add_named_parameter(nb_points_per_distance_unit_t, nb_points_per_distance_unit, number_of_points_per_distance_unit)
//to be documented
CGAL_add_named_parameter(face_normal_t, face_normal, face_normal_map)
CGAL_add_named_parameter(random_seed_t, random_seed, random_seed)
//internal
CGAL_add_named_parameter(weight_calculator_t, weight_calculator, weight_calculator)

View File

@ -46,12 +46,12 @@ namespace Polygon_mesh_processing {
namespace internal {
template<typename GT, typename PM, typename VCMap, typename VPMap>
template<typename GT, typename PM, typename VCMap, typename VPMap, typename RNG>
void random_perturbation_impl(PM& tmesh,
const double& max_size,
VCMap vcmap,
VPMap vpmap,
const int seed,
RNG& rng,
const GT& gt)
{
typedef typename boost::graph_traits<PM>::vertex_descriptor vertex_descriptor;
@ -65,8 +65,6 @@ namespace internal {
Tree tree(faces(tmesh).first, faces(tmesh).second, tmesh);
tree.accelerate_distance_queries();
CGAL::Random rng(seed);
typename GT::Construct_translated_point_3 translate
= gt.construct_translated_point_3_object();
typename GT::Construct_vector_3 vec
@ -112,6 +110,8 @@ namespace internal {
* constrained-or-not status of each vertex of `tmesh`. A constrained vertex
* cannot be modified at all during remeshing
* \cgalParamEnd
* \cgalParambegin{random_seed} an non-negative integer value to seed the random
number generator, and make the perturbation deterministic
* \cgalNamedParamsEnd
*
*/
@ -149,12 +149,14 @@ void random_perturbation(TriangleMesh& tmesh
VCMap vcmap = choose_param(get_param(np, internal_np::vertex_is_constrained),
internal::No_constraint_pmap<vertex_descriptor>());
unsigned int seed = choose_param(get_param(np, internal_np::random_seed), -1);
internal::random_perturbation_impl(tmesh,
perturbation_max_size,
vcmap,
vpmap,
0/*seed*/,
gt);
perturbation_max_size,
vcmap,
vpmap,
((seed == -1) ? CGAL::Random() : CGAL::Random(seed)),
gt);
#ifdef CGAL_PMP_RANDOM_PERTURBATION_VERBOSE
t.stop();