CGAL 4.7  2D Conforming Triangulations and Meshes

#include <CGAL/Delaunay_mesher_2.h>
This class implements a 2D mesh generator.
CDT  must be a 2D constrained Delaunay triangulation, and type CDT::Face should be a model of the concept MeshFaceBase_2 . The geometric traits class of the instance of CDT has to be a model of the concept DelaunayMeshTraits_2 . 
Criteria  must be a model of the concept MeshingCriteria_2 . This traits class defines the shape and size criteria for the triangles of the mesh. Criteria::Face_handle has to be the same as CDT::Face_handle . 
Using This Class
The constructor of the class Delaunay_mesher_2
takes a reference to a CDT
as an argument. A call to the refinement method refine_mesh()
will refine the constrained Delaunay triangulation into a mesh satisfying the size and shape criteria specified in the traits class. Note that if, during the life time of the Delaunay_mesher_2
object, the triangulation is externally modified, any further call to its member methods may crash. Consider constructing a new Delaunay_mesher_2
object if the triangulation has been modified.
Meshing Domain
The domain to be mesh is defined by the constrained edges and a set of seed points. The constrained edges divides the plane into several connected components. The mesh domain is either the union of the bounded connected components including at least one seed, or the union of the bounded connected components that do no contain any seed. Note that the unbounded component of the plane is never meshed.
CGAL::lloyd_optimize_mesh_2
Types  
typedef CDT::Geom_traits  Geom_traits 
the geometric traits class.  
typedef unspecified_type  Seeds_iterator 
const iterator over defined seeds. More...  
Creation  
Delaunay_mesher_2 (CDT &t, Criteria criteria=Criteria())  
Create a new mesher, working on t , with meshing criteria criteria .  
Seeds functions  
void  clear_seeds () 
Sets seeds to the empty set. More...  
template<class InputIterator >  
void  set_seeds (InputIterator begin, InputIterator end, const bool mark=false) 
Sets seeds to the sequence [begin, end) . More...  
Seeds_const_iterator  seeds_begin () const 
Start of the seeds sequence.  
Seeds_const_iterator  seeds_end () const 
Past the end of the seeds sequence.  
Meshing methods  
The function This function actually has an optional argument that permits to prevent this recalculation. The filling of the list of bad faces can then be done by a call to  
void  refine_mesh () 
Refines the constrained Delaunay triangulation into a mesh satisfying the criteria defined by the traits.  
const Criteria &  get_criteria () 
Returns a const reference to the criteria traits object.  
void  set_criteria (Criteria criteria) 
Assigns criteria to the criteria traits object.  
void  set_criteria (Criteria criteria, bool recalculate_bad_faces) 
Assigns criteria to the criteria traits object. More...  
template<class InputIterator >  
void  set_bad_faces (InputIterator begin, InputIterator end) 
This method permits to set the list of bad triangles directly, from the sequence [begin, end) , so that the algorithm will not scan the whole set of triangles to find bad ones. More...  
Step by Step Operations  
The  
void  init () 
This method must be called just before the first call to the following step by step refinement method, that is when all vertices and constrained edges have been inserted into the constrained Delaunay triangulation. More...  
bool  is_refinement_done () 
Tests if the step by step refinement algorithm is done. More...  
bool  step_by_step_refine_mesh () 
Applies one step of the algorithm, by inserting one point, if the algorithm is not done. More...  
typedef unspecified_type CGAL::Delaunay_mesher_2< CDT, Criteria >::Seeds_iterator 
const iterator over defined seeds.
Its value type is Geom_traits::Point_2
.
void CGAL::Delaunay_mesher_2< CDT, Criteria >::clear_seeds  (  ) 
Sets seeds to the empty set.
All finite connected components of the constrained triangulation will be refined.
void CGAL::Delaunay_mesher_2< CDT, Criteria >::init  (  ) 
This method must be called just before the first call to the following step by step refinement method, that is when all vertices and constrained edges have been inserted into the constrained Delaunay triangulation.
It must be called again before any subsequent calls to the step by step refinement method if new vertices or constrained edges have been inserted since the last call.
bool CGAL::Delaunay_mesher_2< CDT, Criteria >::is_refinement_done  (  ) 
Tests if the step by step refinement algorithm is done.
If it returns true
, the following calls to step_by_step_refine_mesh
will not insert any points, until some new constrained segments or points are inserted in the triangulation and init
is called again.
void CGAL::Delaunay_mesher_2< CDT, Criteria >::set_bad_faces  (  InputIterator  begin, 
InputIterator  end  
) 
This method permits to set the list of bad triangles directly, from the sequence [begin, end)
, so that the algorithm will not scan the whole set of triangles to find bad ones.
To use if there is a nonnaive way to find bad triangles.
InputIterator  must be an input iterator with value type Face_handle . 
void CGAL::Delaunay_mesher_2< CDT, Criteria >::set_criteria  (  Criteria  criteria, 
bool  recalculate_bad_faces  
) 
Assigns criteria
to the criteria traits object.
If recalculate_bad_faces
is false
, the list of bad faces is let empty and the function set_bad_faces()
should be called before refine_mesh
.
void CGAL::Delaunay_mesher_2< CDT, Criteria >::set_seeds  (  InputIterator  begin, 
InputIterator  end,  
const bool  mark = false 

) 
Sets seeds to the sequence [begin, end)
.
If mark==true
, the mesh domain is the union of the bounded connected components including at least one seed. If mark==false
, the domain is the union of the bounded components including no seed. Note that the unbounded component of the plane is never meshed.
InputIterator  must be an input iterator with value type Geom_traits::Point_2 . 
bool CGAL::Delaunay_mesher_2< CDT, Criteria >::step_by_step_refine_mesh  (  ) 
Applies one step of the algorithm, by inserting one point, if the algorithm is not done.
Returns false
iff no point has been inserted because the algorithm is done.