\( \newcommand{\E}{\mathrm{E}} \) \( \newcommand{\A}{\mathrm{A}} \) \( \newcommand{\R}{\mathrm{R}} \) \( \newcommand{\N}{\mathrm{N}} \) \( \newcommand{\Q}{\mathrm{Q}} \) \( \newcommand{\Z}{\mathrm{Z}} \) \( \def\ccSum #1#2#3{ \sum_{#1}^{#2}{#3} } \def\ccProd #1#2#3{ \sum_{#1}^{#2}{#3} }\)
CGAL 5.0.4 - Polygon Mesh Processing

Functions to fill holes given as a range of halfedges or as range of points.

Functions

template<typename PolygonMesh , typename OutputIterator , typename NamedParameters >
OutputIterator CGAL::Polygon_mesh_processing::triangulate_hole (PolygonMesh &pmesh, typename boost::graph_traits< PolygonMesh >::halfedge_descriptor border_halfedge, OutputIterator out, const NamedParameters &np)
 triangulates a hole in a polygon mesh. More...
 
template<typename PolygonMesh , typename FaceOutputIterator , typename VertexOutputIterator , typename NamedParameters >
std::pair< FaceOutputIterator, VertexOutputIterator > CGAL::Polygon_mesh_processing::triangulate_and_refine_hole (PolygonMesh &pmesh, typename boost::graph_traits< PolygonMesh >::halfedge_descriptor border_halfedge, FaceOutputIterator face_out, VertexOutputIterator vertex_out, const NamedParameters &np)
 triangulates and refines a hole in a polygon mesh. More...
 
template<typename PolygonMesh , typename FaceOutputIterator , typename VertexOutputIterator , typename NamedParameters >
std::tuple< bool, FaceOutputIterator, VertexOutputIterator > CGAL::Polygon_mesh_processing::triangulate_refine_and_fair_hole (PolygonMesh &pmesh, typename boost::graph_traits< PolygonMesh >::halfedge_descriptor border_halfedge, FaceOutputIterator face_out, VertexOutputIterator vertex_out, const NamedParameters &np)
 triangulates, refines and fairs a hole in a polygon mesh. More...
 
template<typename PointRange1 , typename PointRange2 , typename OutputIterator , typename NamedParameters >
OutputIterator CGAL::Polygon_mesh_processing::triangulate_hole_polyline (const PointRange1 &points, const PointRange2 &third_points, OutputIterator out, const NamedParameters &np)
 creates triangles to fill the hole defined by points in the range points. More...
 
template<typename PointRange , typename OutputIterator , typename NamedParameters >
OutputIterator CGAL::Polygon_mesh_processing::triangulate_hole_polyline (const PointRange &points, OutputIterator out, const NamedParameters &np)
 same as above but the range of third points is omitted. More...
 

Function Documentation

◆ triangulate_and_refine_hole()

template<typename PolygonMesh , typename FaceOutputIterator , typename VertexOutputIterator , typename NamedParameters >
std::pair<FaceOutputIterator, VertexOutputIterator> CGAL::Polygon_mesh_processing::triangulate_and_refine_hole ( PolygonMesh &  pmesh,
typename boost::graph_traits< PolygonMesh >::halfedge_descriptor  border_halfedge,
FaceOutputIterator  face_out,
VertexOutputIterator  vertex_out,
const NamedParameters &  np 
)

#include <CGAL/Polygon_mesh_processing/triangulate_hole.h>

triangulates and refines a hole in a polygon mesh.

Template Parameters
PolygonMeshmust be model of MutableFaceGraph
FacetOutputIteratormodel of OutputIterator holding boost::graph_traits<PolygonMesh>::face_descriptor for patch faces.
VertexOutputIteratormodel of OutputIterator holding boost::graph_traits<PolygonMesh>::vertex_descriptor for patch vertices.
NamedParametersa sequence of Named Parameters
Parameters
pmeshpolygon mesh which has the hole
border_halfedgea border halfedge incident to the hole
face_outoutput iterator over patch faces
vertex_outoutput iterator over patch vertices without including the boundary
npoptional sequence of Named Parameters among the ones listed below
Named Parameters
vertex_point_mapthe property map with the points associated to the vertices of pmesh. If this parameter is omitted, an internal property map for CGAL::vertex_point_t should be available in PolygonMesh
density_control_factorfactor to control density of the ouput mesh, where larger values cause denser refinements, as in refine()
use_delaunay_triangulationif true, use the Delaunay triangulation facet search space. If no valid triangulation can be found in this search space, the algorithm falls back to the non-Delaunay triangulations search space to find a solution
geom_traitsa geometric traits class instance
Returns
pair of face_out and vertex_out
See also
CGAL::Polygon_mesh_processing::triangulate_hole()
CGAL::Polygon_mesh_processing::refine()

◆ triangulate_hole()

template<typename PolygonMesh , typename OutputIterator , typename NamedParameters >
OutputIterator CGAL::Polygon_mesh_processing::triangulate_hole ( PolygonMesh &  pmesh,
typename boost::graph_traits< PolygonMesh >::halfedge_descriptor  border_halfedge,
OutputIterator  out,
const NamedParameters &  np 
)

#include <CGAL/Polygon_mesh_processing/triangulate_hole.h>

triangulates a hole in a polygon mesh.

The hole must not contain any non-manifold vertex, nor self-intersections. The patch generated does not introduce non-manifold edges nor degenerate triangles. If a hole cannot be triangulated, pmesh is not modified and nothing is recorded in out.

Template Parameters
PolygonMesha model of MutableFaceGraph
OutputIteratora model of OutputIterator holding boost::graph_traits<PolygonMesh>::face_descriptor for patch faces.
NamedParametersa sequence of Named Parameters
Parameters
pmeshpolygon mesh containing the hole
border_halfedgea border halfedge incident to the hole
outiterator over patch faces
npoptional sequence of Named Parameters among the ones listed below
Named Parameters
vertex_point_mapthe property map with the points associated to the vertices of pmesh. If this parameter is omitted, an internal property map for CGAL::vertex_point_t must be available in PolygonMesh
use_delaunay_triangulationif true, use the Delaunay triangulation facet search space. If no valid triangulation can be found in this search space, the algorithm falls back to the non-Delaunay triangulations search space to find a solution
geom_traitsa geometric traits class instance
Returns
out

◆ triangulate_hole_polyline() [1/2]

template<typename PointRange1 , typename PointRange2 , typename OutputIterator , typename NamedParameters >
OutputIterator CGAL::Polygon_mesh_processing::triangulate_hole_polyline ( const PointRange1 &  points,
const PointRange2 &  third_points,
OutputIterator  out,
const NamedParameters &  np 
)

#include <CGAL/Polygon_mesh_processing/triangulate_hole.h>

creates triangles to fill the hole defined by points in the range points.

Triangles are recorded into out using the indices of the input points in the range points. Note that no degenerate triangles will be produced. If no triangulation can be found, then nothing is recorded in out.

If faces incident to the polyline outside the hole are known, it is recommended to use this function. The point range third_points indicates for each pair of consecutive points in the range points, the third point of the face this segment is incident to. It influences the choice of the best triangulation while avoiding overfolding.

Note that the ranges points and third_points may or may not contain duplicated first point at the end of sequence.

Precondition
third_points.size() == points.size()
Template Parameters
PointRangerange of points, model of Range. Its iterator type is InputIterator.
OutputIteratormodel of OutputIterator, to collect patch faces. A specialization for CGAL::value_type_traits<OutputIterator> must be available, and the corresponding value type type must have a constructor type(int p0, int p1, int p2) available. The indices correspond to the ones of input points in points.
NamedParametersa sequence of Named Parameters
Parameters
pointsthe range of input points
third_pointsthe range of third points
outiterator over output patch triangles, described by indices of points in points
npoptional sequence of Named Parameters among the ones listed below
Named Parameters
use_delaunay_triangulationif true, use the Delaunay triangulation facet search space. If no valid triangulation can be found in this search space, the algorithm falls back to the non-Delaunay triangulations search space to find a solution
geom_traitsa geometric traits class instance
Examples:
Polygon_mesh_processing/triangulate_polyline_example.cpp.

◆ triangulate_hole_polyline() [2/2]

template<typename PointRange , typename OutputIterator , typename NamedParameters >
OutputIterator CGAL::Polygon_mesh_processing::triangulate_hole_polyline ( const PointRange &  points,
OutputIterator  out,
const NamedParameters &  np 
)

#include <CGAL/Polygon_mesh_processing/triangulate_hole.h>

same as above but the range of third points is omitted.

They are not taken into account in the cost computation that leads the hole filling.

◆ triangulate_refine_and_fair_hole()

template<typename PolygonMesh , typename FaceOutputIterator , typename VertexOutputIterator , typename NamedParameters >
std::tuple<bool, FaceOutputIterator, VertexOutputIterator> CGAL::Polygon_mesh_processing::triangulate_refine_and_fair_hole ( PolygonMesh &  pmesh,
typename boost::graph_traits< PolygonMesh >::halfedge_descriptor  border_halfedge,
FaceOutputIterator  face_out,
VertexOutputIterator  vertex_out,
const NamedParameters &  np 
)

#include <CGAL/Polygon_mesh_processing/triangulate_hole.h>

triangulates, refines and fairs a hole in a polygon mesh.

Template Parameters
PolygonMesha model of MutableFaceGraph
FaceOutputIteratormodel of OutputIterator holding boost::graph_traits<PolygonMesh>::face_descriptor for patch faces
VertexOutputIteratormodel of OutputIterator holding boost::graph_traits<PolygonMesh>::vertex_descriptor for patch vertices
NamedParametersa sequence of Named Parameters
Parameters
pmeshpolygon mesh which has the hole
border_halfedgea border halfedge incident to the hole
face_outoutput iterator over patch faces
vertex_outoutput iterator over patch vertices without including the boundary
npoptional sequence of Named Parameters among the ones listed below
Named Parameters
vertex_point_mapthe property map with the points associated to the vertices of pmesh. If this parameter is omitted, an internal property map for CGAL::vertex_point_t should be available in PolygonMesh
use_delaunay_triangulationif true, use the Delaunay triangulation facet search space. If no valid triangulation can be found in this search space, the algorithm falls back to the non-Delaunay triangulations search space to find a solution
density_control_factorfactor to control density of the ouput mesh, where larger values cause denser refinements, as in refine()
fairing_continuitytangential continuity of the output surface patch
sparse_linear_solveran instance of the sparse linear solver used for fairing
geom_traitsa geometric traits class instance
Returns
tuple of
  • bool: true if fairing is successful
  • face_out
  • vertex_out
See also
CGAL::Polygon_mesh_processing::triangulate_hole()
CGAL::Polygon_mesh_processing::refine()
CGAL::Polygon_mesh_processing::fair()
Examples:
Polygon_mesh_processing/hole_filling_example.cpp.