CGAL::exude_mesh_3
Definition
The function exude_mesh_3 performs a sliver exudation process on a Delaunay mesh.
The sliver exudation process consists in turning the Delaunay triangulation
into a weighted Delaunay triangulation and optimizing the weights
of vertices in such a way that slivers disappear and
the quality of the mesh improves.
#include <CGAL/exude_mesh_3.h>
Precondition
time_limit ≥ 0 and 0 ≤ sliver_bound ≤ 180
Parameters
Parameter C3T3 is required to be a model of the concept
MeshComplex_3InTriangulation_3.
The argument c3t3, passed by
reference, provides the initial mesh
and is modified by the algorithm
to represent the final optimized mesh.
The function has two optional parameters which are named parameters (we use the Boost.Parameters library).
Therefore, when calling the function, the parameters can be provided in any order
provided that the names of the parameters are used
(see example at the bottom of this page).
- Parameter time_limit, whose name is parameters::time_limit,
is used to set up, in seconds,
a CPU time limit after which the optimization process is stopped. This time is
measured using the CGAL::Timer class.
The default value is 0 and means that there is no time limit.
- Parameter sliver_bound, whose name is parameters::sliver_bound,
is designed to give, in degree, a targeted
lower bound on dihedral angles of mesh cells.
The exudation process considers in turn all the mesh cells
that have a smallest dihedral angle less than sliver_bound
and tries to make them disappear by weighting their vertices.
The optimization process
stops when every cell in the mesh achieves this quality.
The default value is 0 and means that there is no targeted bound :
the exuder then runs as long as
it can improve the smallest dihedral angles of the set of cells
incident to some vertices.
Return Values
The function exude_mesh_3 returns a value of type Mesh_optimization_return_code
which is:
- BOUND_REACHED when the targeted bound for the smallest dihedral angle in the mesh is reached.
- TIME_LIMIT_REACHED when the time limit is reached.
- CANT_IMPROVE_ANYMORE when exudation process stops because it can no longer improve
the smallest dihedral angle of the set of cells incident to some vertex in the mesh.
See Also
Mesh_optimization_return_code
make_mesh_3
refine_mesh_3
perturb_mesh_3
lloyd_optimize_mesh_3
odt_optimize_mesh_3
Example
// Exude without sliver_bound, using at most 10s CPU time
exude_mesh_3(c3t3, parameters::time_limit=10);