diff --git a/Generator/include/CGAL/point_generators_2.h b/Generator/include/CGAL/point_generators_2.h
index 52fc3be45fe..6738bb89e2f 100644
--- a/Generator/include/CGAL/point_generators_2.h
+++ b/Generator/include/CGAL/point_generators_2.h
@@ -546,15 +546,15 @@ void Random_points_in_triangle_2
::generate_point() {
T(to_double(_p.y())*b1+to_double(_q.y())*b2+to_double(_r.y())*b3));
}
-namespace internal{
+namespace internal {
//Functor returning Triangle_2 from Triangulation_2 Faces
template
class Triangle_from_face_2
{
typedef typename T::Triangle Triangle;
public:
- typedef Triangle result_type;
- Triangle_from_face_2(){}
+ typedef Triangle result_type;
+ Triangle_from_face_2() {}
Triangle operator()(typename T::Face_handle face)const {
return Triangle(face->vertex(0)->point(), face->vertex(1)->point(), face->vertex(2)->point());
@@ -563,53 +563,54 @@ public:
}//end namespace internal
template
class Random_points_in_triangle_mesh_2 : public Generic_random_point_generator<
- typename T::Face_handle ,
- internal::Triangle_from_face_2,
- Random_points_in_triangle_2 , P> {
+ typename T::Face_handle ,
+ internal::Triangle_from_face_2,
+ Random_points_in_triangle_2 , P> {
public:
- typedef Generic_random_point_generator<
- typename T::Face_handle,
- internal::Triangle_from_face_2,
- Random_points_in_triangle_2 , P> Base;
- typedef typename T::Face_handle Id;
- typedef P result_type;
- typedef Random_points_in_triangle_mesh_2
This;
+ typedef Generic_random_point_generator,
+ Random_points_in_triangle_2,
+ P> Base;
+ typedef typename T::Face_handle Id;
+ typedef P result_type;
+ typedef Random_points_in_triangle_mesh_2
This;
- Random_points_in_triangle_mesh_2( T& triangulation,Random& rnd = default_random)
- : Base( CGAL::make_prevent_deref_range(triangulation.finite_faces_begin(),
- triangulation.finite_faces_end()),
- internal::Triangle_from_face_2(),
- typename Kernel_traits::Kernel::Compute_area_2(),
- rnd )
- {
- }
- This& operator++() {
- Base::generate_point();
- return *this;
- }
- This operator++(int) {
- This tmp = *this;
- ++(*this);
- return tmp;
- }
+ Random_points_in_triangle_mesh_2( T& triangulation,Random& rnd = default_random)
+ : Base( CGAL::make_prevent_deref_range(triangulation.finite_faces_begin(),
+ triangulation.finite_faces_end()),
+ internal::Triangle_from_face_2(),
+ typename Kernel_traits::Kernel::Compute_area_2(),
+ rnd )
+ {
+ }
+ This& operator++() {
+ Base::generate_point();
+ return *this;
+ }
+ This operator++(int) {
+ This tmp = *this;
+ ++(*this);
+ return tmp;
+ }
};
namespace internal
{
+
template
class Deref
{
public:
- typedef typename std::iterator_traits::value_type result_type;
- typename std::iterator_traits::value_type operator()(T triangle)const
+ typedef const T& result_type;
+ const T& operator()(const T* triangle) const
{
return *triangle;
}
};
template
-struct Address_of{
+struct Address_of {
typedef const A* result_type;
const A* operator()(const A& a) const
{
@@ -619,40 +620,40 @@ struct Address_of{
}//namesapce internal
-template
-class Random_points_in_triangles_2 : public Generic_random_point_generator<
- const typename Kernel_traits::Kernel::Triangle_2*,
- internal::Deref::Kernel::Triangle_2*>,
- Random_points_in_triangle_2 ,
- Point_2> {
-public:
- typedef typename Kernel_traits::Kernel::Triangle_2 Triangle_2;
- typedef Generic_random_point_generator<
- const typename Kernel_traits::Kernel::Triangle_2*,
- internal::Deref,
- Random_points_in_triangle_2 ,Point_2> Base;
- typedef const Triangle_2* Id;
- typedef Point_2 result_type;
- typedef Random_points_in_triangles_2 This;
+template ::Kernel::Triangle_2>
+struct Random_points_in_triangles_2
+ : public Generic_random_point_generator,
+ Random_points_in_triangle_2,
+ Point_2>
+{
+ typedef Generic_random_point_generator,
+ Random_points_in_triangle_2,
+ Point_2> Base;
+ typedef const Triangle_2* Id;
+ typedef Point_2 result_type;
+ typedef Random_points_in_triangles_2 This;
- template
- Random_points_in_triangles_2( const TriangleRange& triangles, Random& rnd = default_random)
- : Base(make_range( boost::make_transform_iterator(triangles.begin(), internal::Address_of()),
- boost::make_transform_iterator(triangles.end(), internal::Address_of()) ),
- internal::Deref(),
- typename Kernel_traits::Kernel::Compute_area_2()
- ,rnd )
- {
- }
- This& operator++() {
- Base::generate_point();
- return *this;
- }
- This operator++(int) {
- This tmp = *this;
- ++(*this);
- return tmp;
- }
+ template
+ Random_points_in_triangles_2( const TriangleRange& triangles, Random& rnd = default_random)
+ : Base(make_range( boost::make_transform_iterator(triangles.begin(), internal::Address_of()),
+ boost::make_transform_iterator(triangles.end(), internal::Address_of()) ),
+ internal::Deref(),
+ typename Kernel_traits::Kernel::Compute_area_2(),
+ rnd )
+ {
+ }
+ This& operator++() {
+ Base::generate_point();
+ return *this;
+ }
+ This operator++(int) {
+ This tmp = *this;
+ ++(*this);
+ return tmp;
+ }
};
} //namespace CGAL
diff --git a/Generator/include/CGAL/point_generators_3.h b/Generator/include/CGAL/point_generators_3.h
index 2eb6e1e6887..bbc9f14575f 100644
--- a/Generator/include/CGAL/point_generators_3.h
+++ b/Generator/include/CGAL/point_generators_3.h
@@ -308,49 +308,50 @@ void Random_points_in_tetrahedron_3::generate_point() {
template ::type>
-class Random_points_on_triangle_mesh_3 : public Generic_random_point_generator<
- typename boost::graph_traits ::face_descriptor ,
- CGAL::Property_map_to_unary_function >,
- Random_points_in_triangle_3::value_type> ,
- typename boost::property_traits::value_type> {
-public:
- typedef typename boost::property_traits::value_type P;
- typedef Generic_random_point_generator<
- typename boost::graph_traits ::face_descriptor ,
- CGAL::Property_map_to_unary_function::type> >,
- Random_points_in_triangle_3 , P> Base;
- typedef typename CGAL::Triangle_from_face_descriptor_map<
- TriangleMesh,VertexPointMap> Pmap;
- typedef typename CGAL::Triangle_from_face_descriptor_map<
- TriangleMesh,VertexPointMap> Object_from_id_map;
- typedef Random_points_in_triangle_3
Generator_on_object;
- typedef typename boost::graph_traits::face_descriptor Id;
- typedef P result_type;
- typedef Random_points_on_triangle_mesh_3< TriangleMesh> This;
+struct Random_points_on_triangle_mesh_3
+ : public Generic_random_point_generator<
+ typename boost::graph_traits ::face_descriptor ,
+ CGAL::Property_map_to_unary_function >,
+ Random_points_in_triangle_3::value_type>,
+ typename boost::property_traits::value_type>
+{
+ typedef typename boost::property_traits::value_type P;
+ typedef Generic_random_point_generator<
+ typename boost::graph_traits ::face_descriptor ,
+ CGAL::Property_map_to_unary_function::type> >,
+ Random_points_in_triangle_3 , P> Base;
+ typedef typename CGAL::Triangle_from_face_descriptor_map<
+ TriangleMesh,VertexPointMap> Pmap;
+ typedef typename CGAL::Triangle_from_face_descriptor_map<
+ TriangleMesh,VertexPointMap> Object_from_id_map;
+ typedef Random_points_in_triangle_3
Generator_on_object;
+ typedef typename boost::graph_traits::face_descriptor Id;
+ typedef P result_type;
+ typedef Random_points_on_triangle_mesh_3< TriangleMesh> This;
- Random_points_on_triangle_mesh_3( TriangleMesh& mesh,Random& rnd = default_random)
- : Base( faces(mesh),
- CGAL::Property_map_to_unary_function(&mesh),
- typename Kernel_traits::Kernel::Compute_area_3(),
- rnd )
- {
- }
- This& operator++() {
- Base::generate_point();
- return *this;
- }
- This operator++(int) {
- This tmp = *this;
- ++(*this);
- return tmp;
- }
+ Random_points_on_triangle_mesh_3( TriangleMesh& mesh,Random& rnd = default_random)
+ : Base( faces(mesh),
+ CGAL::Property_map_to_unary_function(&mesh),
+ typename Kernel_traits::Kernel::Compute_area_3(),
+ rnd )
+ {
+ }
+ This& operator++() {
+ Base::generate_point();
+ return *this;
+ }
+ This operator++(int) {
+ This tmp = *this;
+ ++(*this);
+ return tmp;
+ }
double mesh_area() const
{
- this->sum_of_weights();
+ return this->sum_of_weights();
}
};
@@ -364,17 +365,17 @@ class Triangle_from_face_C3t3
typedef typename T::Point Point;
typedef std::pair Face;
public:
- typedef Triangle result_type;
+ typedef Triangle result_type;
Triangle_from_face_C3t3()
{}
Triangle operator()(Face face)const
{
- typename T::Cell_handle cell = face.first;
- int index = face.second;
- const Point& pa = cell->vertex((index+1)&3)->point();
- const Point& pb = cell->vertex((index+2)&3)->point();
- const Point& pc = cell->vertex((index+3)&3)->point();
+ typename T::Cell_handle cell = face.first;
+ int index = face.second;
+ const Point& pa = cell->vertex((index+1)&3)->point();
+ const Point& pb = cell->vertex((index+2)&3)->point();
+ const Point& pc = cell->vertex((index+3)&3)->point();
return Triangle(pa, pb, pc);
}
};
@@ -386,123 +387,130 @@ class Tetrahedron_from_cell_C3t3
typedef typename T::Point Point;
typedef typename Kernel_traits::Kernel::Tetrahedron_3 Tetrahedron;
public:
- typedef Tetrahedron result_type;
+ typedef Tetrahedron result_type;
Tetrahedron_from_cell_C3t3()
{}
Tetrahedron operator()(Cell cell)const
{
- Point p0 = cell->vertex(0)->point();
- Point p1 = cell->vertex(1)->point();
- Point p2 = cell->vertex(2)->point();
- Point p3 = cell->vertex(3)->point();
+ Point p0 = cell->vertex(0)->point();
+ Point p1 = cell->vertex(1)->point();
+ Point p2 = cell->vertex(2)->point();
+ Point p3 = cell->vertex(3)->point();
return Tetrahedron(p0,p1,p2,p3);
}
};
}//end namespace internal
template
-class Random_points_on_tetrahedral_mesh_boundary : public Generic_random_point_generator<
- std::pair,
- internal::Triangle_from_face_C3t3,
- Random_points_in_triangle_3 , typename C3t3::Point> {
-public:
- typedef Generic_random_point_generator<
- std::pair,
- internal::Triangle_from_face_C3t3,
- Random_points_in_triangle_3 , typename C3t3::Point> Base;
- typedef std::pair Id;
- typedef typename C3t3::Point result_type;
- typedef Random_points_on_tetrahedral_mesh_boundary This;
+struct Random_points_on_tetrahedral_mesh_boundary
+ : public Generic_random_point_generator<
+ std::pair,
+ internal::Triangle_from_face_C3t3,
+ Random_points_in_triangle_3,
+ typename C3t3::Point>
+{
+ typedef Generic_random_point_generator<
+ std::pair,
+ internal::Triangle_from_face_C3t3,
+ Random_points_in_triangle_3,
+ typename C3t3::Point> Base;
+ typedef std::pair Id;
+ typedef typename C3t3::Point result_type;
+ typedef Random_points_on_tetrahedral_mesh_boundary This;
- Random_points_on_tetrahedral_mesh_boundary( C3t3& c3t3,Random& rnd = default_random)
- : Base( make_range( c3t3.facets_in_complex_begin(),
- c3t3.facets_in_complex_end()),
- internal::Triangle_from_face_C3t3(),
- typename Kernel_traits::Kernel::Compute_area_3(),
- rnd )
- {
- }
- This& operator++() {
- Base::generate_point();
- return *this;
- }
- This operator++(int) {
- This tmp = *this;
- ++(*this);
- return tmp;
- }
+ Random_points_on_tetrahedral_mesh_boundary( C3t3& c3t3,Random& rnd = default_random)
+ : Base( make_range( c3t3.facets_in_complex_begin(),
+ c3t3.facets_in_complex_end()),
+ internal::Triangle_from_face_C3t3(),
+ typename Kernel_traits::Kernel::Compute_area_3(),
+ rnd )
+ {
+ }
+ This& operator++() {
+ Base::generate_point();
+ return *this;
+ }
+ This operator++(int) {
+ This tmp = *this;
+ ++(*this);
+ return tmp;
+ }
};
template
-class Random_points_in_tetrahedral_mesh_3 : public Generic_random_point_generator<
- typename C3t3::Triangulation::Cell_handle,
- internal::Tetrahedron_from_cell_C3t3,
- Random_points_in_tetrahedron_3 , typename C3t3::Point> {
-public:
- typedef Generic_random_point_generator<
- typename C3t3::Triangulation::Cell_handle,
- internal::Tetrahedron_from_cell_C3t3,
- Random_points_in_tetrahedron_3 , typename C3t3::Point> Base;
- typedef typename C3t3::Triangulation::Cell_handle Id;
- typedef typename C3t3::Point result_type;
- typedef Random_points_in_tetrahedral_mesh_3 This;
+struct Random_points_in_tetrahedral_mesh_3
+ : public Generic_random_point_generator<
+ typename C3t3::Triangulation::Cell_handle,
+ internal::Tetrahedron_from_cell_C3t3,
+ Random_points_in_tetrahedron_3,
+ typename C3t3::Point>
+{
+ typedef Generic_random_point_generator<
+ typename C3t3::Triangulation::Cell_handle,
+ internal::Tetrahedron_from_cell_C3t3,
+ Random_points_in_tetrahedron_3,
+ typename C3t3::Point> Base;
+ typedef typename C3t3::Triangulation::Cell_handle Id;
+ typedef typename C3t3::Point result_type;
+ typedef Random_points_in_tetrahedral_mesh_3 This;
- Random_points_in_tetrahedral_mesh_3( C3t3& c3t3,Random& rnd = default_random)
- : Base( CGAL::make_prevent_deref_range(c3t3.cells_in_complex_begin(),
- c3t3.cells_in_complex_end()),
- internal::Tetrahedron_from_cell_C3t3(),
- typename Kernel_traits::Kernel::Compute_volume_3(),
- rnd )
- {
- }
- This& operator++() {
- Base::generate_point();
- return *this;
- }
- This operator++(int) {
- This tmp = *this;
- ++(*this);
- return tmp;
- }
+ Random_points_in_tetrahedral_mesh_3( C3t3& c3t3,Random& rnd = default_random)
+ : Base( CGAL::make_prevent_deref_range(c3t3.cells_in_complex_begin(),
+ c3t3.cells_in_complex_end()),
+ internal::Tetrahedron_from_cell_C3t3(),
+ typename Kernel_traits::Kernel::Compute_volume_3(),
+ rnd )
+ {
+ }
+ This& operator++() {
+ Base::generate_point();
+ return *this;
+ }
+ This operator++(int) {
+ This tmp = *this;
+ ++(*this);
+ return tmp;
+ }
};
-template
-class Random_points_in_triangles_3 : public Generic_random_point_generator<
- const typename Kernel_traits::Kernel::Triangle_3*,
- internal::Deref::Kernel::Triangle_3*>,
- Random_points_in_triangle_3 ,Point_3> {
-public:
- typedef typename Kernel_traits::Kernel::Triangle_3 Triangle_3;
- typedef Generic_random_point_generator<
- const typename Kernel_traits::Kernel::Triangle_3*,
- internal::Deref,
- Random_points_in_triangle_3 ,Point_3> Base;
- typedef const Triangle_3* Id;
- typedef Point_3 result_type;
- typedef Random_points_in_triangles_3 This;
+template ::Kernel::Triangle_3>
+struct Random_points_in_triangles_3
+ : public Generic_random_point_generator,
+ Random_points_in_triangle_3,
+ Point_3>
+{
+ typedef Generic_random_point_generator,
+ Random_points_in_triangle_3,
+ Point_3> Base;
+ typedef const Triangle_3* Id;
+ typedef Point_3 result_type;
+ typedef Random_points_in_triangles_3 This;
- template
- Random_points_in_triangles_3( const TriangleRange& triangles, Random& rnd = default_random)
- : Base(make_range( boost::make_transform_iterator(triangles.begin(), internal::Address_of()),
- boost::make_transform_iterator(triangles.end(), internal::Address_of()) ),
- internal::Deref(),
- typename Kernel_traits::Kernel::Compute_area_3()
- ,rnd )
- {
- }
- This& operator++() {
- Base::generate_point();
- return *this;
- }
- This operator++(int) {
- This tmp = *this;
- ++(*this);
- return tmp;
- }
+ template
+ Random_points_in_triangles_3( const TriangleRange& triangles, Random& rnd = default_random)
+ : Base(make_range( boost::make_transform_iterator(triangles.begin(), internal::Address_of()),
+ boost::make_transform_iterator(triangles.end(), internal::Address_of()) ),
+ internal::Deref(),
+ typename Kernel_traits::Kernel::Compute_area_3()
+ ,rnd )
+ {
+ }
+ This& operator++() {
+ Base::generate_point();
+ return *this;
+ }
+ This operator++(int) {
+ This tmp = *this;
+ ++(*this);
+ return tmp;
+ }
};
} //namespace CGAL