correctly use the Creator

This commit is contained in:
Sébastien Loriot 2016-11-02 10:13:36 +01:00
parent 7ec512e359
commit 19a7a84983
4 changed files with 71 additions and 31 deletions

View File

@ -377,7 +377,9 @@ typedef const Point_2& reference;
\sa `std::random_shuffle` \sa `std::random_shuffle`
*/ */
template< typename Point_2, typename Triangulation > template< typename Point_2,
typename Triangulation,
typename Creator = Creator_uniform_2<typename Kernel_traits<Point_2>::Kernel::RT,Point_2> >
class Random_points_in_triangle_mesh_2 { class Random_points_in_triangle_mesh_2 {
public: public:
@ -446,7 +448,9 @@ get_default_random() );
\sa `std::random_shuffle` \sa `std::random_shuffle`
*/ */
template< typename Point_2 > template< typename Point_2,
typename Triangle_2 = typename Kernel_traits<Point_2>::Kernel::Triangle_2,
typename Creator = Creator_uniform_2<typename Kernel_traits<Point_2>::Kernel::RT,Point_2> >
class Random_points_in_triangles_2 { class Random_points_in_triangles_2 {
public: public:

View File

@ -358,7 +358,10 @@ The triangle range must be valid and unchanged while the iterator is used.
\sa `std::random_shuffle` \sa `std::random_shuffle`
*/ */
template< typename Point_3> template< typename Point_3,
typename Triangle_3=typename Kernel_traits<Point_3>::Kernel::Triangle_3,
typename Creator = Creator_uniform_3< typename Kernel_traits< Point_3 >::Kernel::RT,
Point_3 > >
class Random_points_in_triangles_3 { class Random_points_in_triangles_3 {
public: public:
@ -429,8 +432,12 @@ The triangle mesh must be valid and unchanged while the iterator is used.
\sa `std::random_shuffle` \sa `std::random_shuffle`
*/ */
template < class TriangleMesh, class VertexPointMap = typename boost::property_map<TriangleMesh, template < class TriangleMesh,
CGAL::vertex_point_t>::type> > class VertexPointMap = typename boost::property_map<TriangleMesh,
CGAL::vertex_point_t>::type>,
class Creator = Creator_uniform_3<
typename Kernel_traits< typename boost::property_traits<VertexPointMap>::value_type >::Kernel::RT,
typename boost::property_traits<VertexPointMap>::value_type > >
class Random_points_in_triangle_mesh_3 { class Random_points_in_triangle_mesh_3 {
public: public:
@ -508,7 +515,11 @@ C3T3 is a model of `Mesh_complex_3_in_triangulation_3`
\sa `std::random_shuffle` \sa `std::random_shuffle`
*/ */
template <class C3T3> template <class C3T3,
class Creator = Creator_uniform_3<
typename Kernel_traits< typename C3t3::Point >::Kernel::RT,
typename C3t3::Point >
>
class Random_points_in_tetrahedral_mesh_boundary_3 { class Random_points_in_tetrahedral_mesh_boundary_3 {
public: public:
@ -581,7 +592,10 @@ C3T3 is a model of `Mesh_complex_3_in_triangulation_3`
\sa `std::random_shuffle` \sa `std::random_shuffle`
*/ */
template <class C3T3> template <class C3T3,
class Creator = Creator_uniform_3<
typename Kernel_traits< typename C3t3::Point >::Kernel::RT,
typename C3t3::Point > >
class Random_points_in_tetrahedral_mesh_3 { class Random_points_in_tetrahedral_mesh_3 {
public: public:

View File

@ -505,7 +505,7 @@ class Random_points_in_triangle_2 : public Random_generator_base<P> {
void generate_point(); void generate_point();
public: public:
typedef P result_type; typedef P result_type;
typedef Random_points_in_triangle_2<P> This; typedef Random_points_in_triangle_2<P, Creator> This;
typedef typename Kernel_traits<P>::Kernel::Triangle_2 Triangle_2; typedef typename Kernel_traits<P>::Kernel::Triangle_2 Triangle_2;
Random_points_in_triangle_2() {} Random_points_in_triangle_2() {}
Random_points_in_triangle_2( const This& x,Random& rnd = get_default_random()) Random_points_in_triangle_2( const This& x,Random& rnd = get_default_random())
@ -561,7 +561,11 @@ public:
} }
}; };
}//end namespace internal }//end namespace internal
template <class P, class T> template <class P,
class T,
class Creator =
Creator_uniform_2<typename Kernel_traits<P>::Kernel::RT,P>
>
class Random_points_in_triangle_mesh_2 : public Generic_random_point_generator< class Random_points_in_triangle_mesh_2 : public Generic_random_point_generator<
typename T::Face_handle , typename T::Face_handle ,
internal::Triangle_from_face_2<T>, internal::Triangle_from_face_2<T>,
@ -569,11 +573,11 @@ class Random_points_in_triangle_mesh_2 : public Generic_random_point_generator<
public: public:
typedef Generic_random_point_generator<typename T::Face_handle, typedef Generic_random_point_generator<typename T::Face_handle,
internal::Triangle_from_face_2<T>, internal::Triangle_from_face_2<T>,
Random_points_in_triangle_2<P>, Random_points_in_triangle_2<P, Creator>,
P> Base; P> Base;
typedef typename T::Face_handle Id; typedef typename T::Face_handle Id;
typedef P result_type; typedef P result_type;
typedef Random_points_in_triangle_mesh_2<P, T> This; typedef Random_points_in_triangle_mesh_2<P, T, Creator> This;
Random_points_in_triangle_mesh_2( const T& triangulation, Random& rnd = get_default_random()) Random_points_in_triangle_mesh_2( const T& triangulation, Random& rnd = get_default_random())
@ -621,7 +625,9 @@ struct Address_of {
}//namesapce internal }//namesapce internal
template <class Point_2, template <class Point_2,
class Triangle_2=typename Kernel_traits<Point_2>::Kernel::Triangle_2> class Triangle_2=typename Kernel_traits<Point_2>::Kernel::Triangle_2,
class Creator =
Creator_uniform_2<typename Kernel_traits<Point_2>::Kernel::RT,Point_2> >
struct Random_points_in_triangles_2 struct Random_points_in_triangles_2
: public Generic_random_point_generator<const Triangle_2*, : public Generic_random_point_generator<const Triangle_2*,
internal::Deref<Triangle_2>, internal::Deref<Triangle_2>,
@ -630,11 +636,11 @@ struct Random_points_in_triangles_2
{ {
typedef Generic_random_point_generator<const Triangle_2*, typedef Generic_random_point_generator<const Triangle_2*,
internal::Deref<Triangle_2>, internal::Deref<Triangle_2>,
Random_points_in_triangle_2<Point_2>, Random_points_in_triangle_2<Point_2, Creator>,
Point_2> Base; Point_2> Base;
typedef const Triangle_2* Id; typedef const Triangle_2* Id;
typedef Point_2 result_type; typedef Point_2 result_type;
typedef Random_points_in_triangles_2<Point_2> This; typedef Random_points_in_triangles_2<Point_2, Triangle_2, Creator> This;
template<typename TriangleRange> template<typename TriangleRange>
Random_points_in_triangles_2( const TriangleRange& triangles, Random& rnd = get_default_random()) Random_points_in_triangles_2( const TriangleRange& triangles, Random& rnd = get_default_random())

View File

@ -205,7 +205,7 @@ class Random_points_in_triangle_3 : public Random_generator_base<P> {
void generate_point(); void generate_point();
public: public:
typedef P result_type; typedef P result_type;
typedef Random_points_in_triangle_3<P> This; typedef Random_points_in_triangle_3<P, Creator> This;
typedef typename Kernel_traits<P>::Kernel::Triangle_3 Triangle_3; typedef typename Kernel_traits<P>::Kernel::Triangle_3 Triangle_3;
Random_points_in_triangle_3() {} Random_points_in_triangle_3() {}
Random_points_in_triangle_3( const This& x,Random& rnd = get_default_random()) Random_points_in_triangle_3( const This& x,Random& rnd = get_default_random())
@ -257,7 +257,7 @@ class Random_points_in_tetrahedron_3 : public Random_generator_base<P> {
void generate_point(); void generate_point();
public: public:
typedef P result_type; typedef P result_type;
typedef Random_points_in_tetrahedron_3<P> This; typedef Random_points_in_tetrahedron_3<P, Creator> This;
typedef typename Kernel_traits<P>::Kernel::Tetrahedron_3 Tetrahedron_3; typedef typename Kernel_traits<P>::Kernel::Tetrahedron_3 Tetrahedron_3;
Random_points_in_tetrahedron_3() {} Random_points_in_tetrahedron_3() {}
Random_points_in_tetrahedron_3( const This& x,Random& rnd = get_default_random()) Random_points_in_tetrahedron_3( const This& x,Random& rnd = get_default_random())
@ -306,14 +306,19 @@ void Random_points_in_tetrahedron_3<P, Creator>::generate_point() {
template <class TriangleMesh, class VertexPointMap = typename boost::property_map<TriangleMesh, template <class TriangleMesh,
CGAL::vertex_point_t>::const_type> class VertexPointMap = typename boost::property_map<TriangleMesh,
CGAL::vertex_point_t>::const_type,
class Creator = Creator_uniform_3<
typename Kernel_traits< typename boost::property_traits<VertexPointMap>::value_type >::Kernel::RT,
typename boost::property_traits<VertexPointMap>::value_type >
>
struct Random_points_in_triangle_mesh_3 struct Random_points_in_triangle_mesh_3
: public Generic_random_point_generator< : public Generic_random_point_generator<
typename boost::graph_traits <TriangleMesh>::face_descriptor , typename boost::graph_traits <TriangleMesh>::face_descriptor ,
CGAL::Property_map_to_unary_function<CGAL::Triangle_from_face_descriptor_map< CGAL::Property_map_to_unary_function<CGAL::Triangle_from_face_descriptor_map<
TriangleMesh, VertexPointMap > >, TriangleMesh, VertexPointMap > >,
Random_points_in_triangle_3<typename boost::property_traits<VertexPointMap>::value_type>, Random_points_in_triangle_3<typename boost::property_traits<VertexPointMap>::value_type, Creator>,
typename boost::property_traits<VertexPointMap>::value_type> typename boost::property_traits<VertexPointMap>::value_type>
{ {
typedef typename boost::property_traits<VertexPointMap>::value_type P; typedef typename boost::property_traits<VertexPointMap>::value_type P;
@ -321,15 +326,14 @@ struct Random_points_in_triangle_mesh_3
typename boost::graph_traits <TriangleMesh>::face_descriptor , typename boost::graph_traits <TriangleMesh>::face_descriptor ,
CGAL::Property_map_to_unary_function<typename CGAL::Triangle_from_face_descriptor_map< CGAL::Property_map_to_unary_function<typename CGAL::Triangle_from_face_descriptor_map<
TriangleMesh,VertexPointMap> >, TriangleMesh,VertexPointMap> >,
Random_points_in_triangle_3<P> , P> Base; Random_points_in_triangle_3<P, Creator> , P> Base;
typedef typename CGAL::Triangle_from_face_descriptor_map< typedef typename CGAL::Triangle_from_face_descriptor_map<
TriangleMesh,VertexPointMap> Pmap; TriangleMesh,VertexPointMap> Pmap;
typedef typename CGAL::Triangle_from_face_descriptor_map< typedef typename CGAL::Triangle_from_face_descriptor_map<
TriangleMesh,VertexPointMap> Object_from_id_map; TriangleMesh,VertexPointMap> Object_from_id_map;
typedef Random_points_in_triangle_3<P> Generator_on_object;
typedef typename boost::graph_traits<TriangleMesh>::face_descriptor Id; typedef typename boost::graph_traits<TriangleMesh>::face_descriptor Id;
typedef P result_type; typedef P result_type;
typedef Random_points_in_triangle_mesh_3< TriangleMesh, VertexPointMap> This; typedef Random_points_in_triangle_mesh_3< TriangleMesh, VertexPointMap, Creator> This;
Random_points_in_triangle_mesh_3( const TriangleMesh& mesh,Random& rnd = get_default_random()) Random_points_in_triangle_mesh_3( const TriangleMesh& mesh,Random& rnd = get_default_random())
@ -408,7 +412,11 @@ public:
}; };
}//end namespace internal }//end namespace internal
template <class C3t3> template <class C3t3,
class Creator = Creator_uniform_3<
typename Kernel_traits< typename C3t3::Point >::Kernel::RT,
typename C3t3::Point >
>
struct Random_points_in_tetrahedral_mesh_boundary_3 struct Random_points_in_tetrahedral_mesh_boundary_3
: public Generic_random_point_generator< : public Generic_random_point_generator<
std::pair<typename C3t3::Triangulation::Cell_handle, int>, std::pair<typename C3t3::Triangulation::Cell_handle, int>,
@ -419,11 +427,11 @@ struct Random_points_in_tetrahedral_mesh_boundary_3
typedef Generic_random_point_generator< typedef Generic_random_point_generator<
std::pair<typename C3t3::Triangulation::Cell_handle, int>, std::pair<typename C3t3::Triangulation::Cell_handle, int>,
internal::Triangle_from_face_C3t3<typename C3t3::Triangulation>, internal::Triangle_from_face_C3t3<typename C3t3::Triangulation>,
Random_points_in_triangle_3<typename C3t3::Point>, Random_points_in_triangle_3<typename C3t3::Point, Creator>,
typename C3t3::Point> Base; typename C3t3::Point> Base;
typedef std::pair<typename C3t3::Triangulation::Cell_handle, int> Id; typedef std::pair<typename C3t3::Triangulation::Cell_handle, int> Id;
typedef typename C3t3::Point result_type; typedef typename C3t3::Point result_type;
typedef Random_points_in_tetrahedral_mesh_boundary_3<C3t3> This; typedef Random_points_in_tetrahedral_mesh_boundary_3<C3t3, Creator> This;
Random_points_in_tetrahedral_mesh_boundary_3( const C3t3& c3t3,Random& rnd = get_default_random()) Random_points_in_tetrahedral_mesh_boundary_3( const C3t3& c3t3,Random& rnd = get_default_random())
@ -445,7 +453,11 @@ struct Random_points_in_tetrahedral_mesh_boundary_3
} }
}; };
template <class C3t3> template <class C3t3,
class Creator = Creator_uniform_3<
typename Kernel_traits< typename C3t3::Point >::Kernel::RT,
typename C3t3::Point >
>
struct Random_points_in_tetrahedral_mesh_3 struct Random_points_in_tetrahedral_mesh_3
: public Generic_random_point_generator< : public Generic_random_point_generator<
typename C3t3::Triangulation::Cell_handle, typename C3t3::Triangulation::Cell_handle,
@ -456,11 +468,11 @@ struct Random_points_in_tetrahedral_mesh_3
typedef Generic_random_point_generator< typedef Generic_random_point_generator<
typename C3t3::Triangulation::Cell_handle, typename C3t3::Triangulation::Cell_handle,
internal::Tetrahedron_from_cell_C3t3<typename C3t3::Triangulation>, internal::Tetrahedron_from_cell_C3t3<typename C3t3::Triangulation>,
Random_points_in_tetrahedron_3<typename C3t3::Point>, Random_points_in_tetrahedron_3<typename C3t3::Point, Creator>,
typename C3t3::Point> Base; typename C3t3::Point> Base;
typedef typename C3t3::Triangulation::Cell_handle Id; typedef typename C3t3::Triangulation::Cell_handle Id;
typedef typename C3t3::Point result_type; typedef typename C3t3::Point result_type;
typedef Random_points_in_tetrahedral_mesh_3<C3t3> This; typedef Random_points_in_tetrahedral_mesh_3<C3t3, Creator> This;
Random_points_in_tetrahedral_mesh_3( const C3t3& c3t3,Random& rnd = get_default_random()) Random_points_in_tetrahedral_mesh_3( const C3t3& c3t3,Random& rnd = get_default_random())
@ -484,7 +496,11 @@ struct Random_points_in_tetrahedral_mesh_3
template <class Point_3, template <class Point_3,
class Triangle_3=typename Kernel_traits<Point_3>::Kernel::Triangle_3> class Triangle_3=typename Kernel_traits<Point_3>::Kernel::Triangle_3,
class Creator = Creator_uniform_3<
typename Kernel_traits< Point_3 >::Kernel::RT,
Point_3 >
>
struct Random_points_in_triangles_3 struct Random_points_in_triangles_3
: public Generic_random_point_generator<const Triangle_3*, : public Generic_random_point_generator<const Triangle_3*,
internal::Deref<Triangle_3>, internal::Deref<Triangle_3>,
@ -493,11 +509,11 @@ struct Random_points_in_triangles_3
{ {
typedef Generic_random_point_generator<const Triangle_3*, typedef Generic_random_point_generator<const Triangle_3*,
internal::Deref<Triangle_3>, internal::Deref<Triangle_3>,
Random_points_in_triangle_3<Point_3>, Random_points_in_triangle_3<Point_3, Creator>,
Point_3> Base; Point_3> Base;
typedef const Triangle_3* Id; typedef const Triangle_3* Id;
typedef Point_3 result_type; typedef Point_3 result_type;
typedef Random_points_in_triangles_3<Point_3> This; typedef Random_points_in_triangles_3<Point_3, Triangle_3, Creator> This;
template<typename TriangleRange> template<typename TriangleRange>
Random_points_in_triangles_3( const TriangleRange& triangles, Random& rnd = get_default_random()) Random_points_in_triangles_3( const TriangleRange& triangles, Random& rnd = get_default_random())