\( \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 4.8 - Polygon Mesh Processing

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
Functions
Hole Filling
Polygon Mesh Processing Reference

##

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 >
CGAL::cpp11::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 CGAL_PMP_NP_TEMPLATE_PARAMETERS >
OutputIterator | CGAL::Polygon_mesh_processing::triangulate_hole_polyline (const PointRange &points, OutputIterator out, const CGAL_PMP_NP_CLASS &np)
| same as above but the range of third points is omitted. More...

## Function Documentation

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.

Template Parameters

  PolygonMesh | must be model of `MutableFaceGraph` that has an internal property map for `CGAL::vertex_point_t`
  FacetOutputIterator | model of `OutputIterator` holding `boost::graph_traits<PolygonMesh>::face_descriptor` for patch faces.
  VertexOutputIterator | model of `OutputIterator` holding `boost::graph_traits<PolygonMesh>::vertex_descriptor` for patch vertices.
  NamedParameters | a sequence of Named Parameters

Parameters

  pmesh | polygon mesh which has the hole
  border_halfedge | a border halfedge incident to the hole
  face_out | output iterator over patch faces
  vertex_out | output iterator over patch vertices without including the boundary
  np | optional sequence of Named Parameters among the ones listed below

Named Parameters

  vertex_point_map | the property map with the points associated to the vertices of `pmesh`
  density_control_factor | factor to control density of the ouput mesh, where larger values cause denser refinements, as in `refine()`
  use_delaunay_triangulation | if `true`, use the Delaunay triangulation facet search space
  geom_traits | a 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()

`#include <CGAL/Polygon_mesh_processing/triangulate_hole.h>`

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.

The hole must not contain any non-manifold vertex. 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

  PolygonMesh | a model of `MutableFaceGraph` that has an internal property map for `CGAL::vertex_point_t`
  OutputIterator | a model of `OutputIterator` holding `boost::graph_traits<PolygonMesh>::face_descriptor` for patch faces.
  NamedParameters | a sequence of Named Parameters

Parameters

  pmesh | polygon mesh containing the hole
  border_halfedge | a border halfedge incident to the hole
  out | iterator over patch faces
  np | optional sequence of Named Parameters among the ones listed below

Named Parameters

  vertex_point_map | the property map with the points associated to the vertices of `pmesh`
  use_delaunay_triangulation | if `true`, use the Delaunay triangulation facet search space
  geom_traits | a geometric traits class instance

Returns
  `out`

`#include <CGAL/Polygon_mesh_processing/triangulate_hole.h>`

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`.

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

  PointRange | range of points, model of `Range`. Its iterator type is `InputIterator`.
  OutputIterator | model 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`.
  NamedParameters | a sequence of Named Parameters

Parameters

  points | the range of input points
  third_points | the range of third points
  out | iterator over output patch triangles, described by indices of points in `points`
  np | optional sequence of Named Parameters among the ones listed below

Named Parameters

  use_delaunay_triangulation | if `true`, use the Delaunay triangulation facet search space
  geom_traits | a geometric traits class instance

`#include <CGAL/Polygon_mesh_processing/triangulate_hole.h>`

Examples:
  Polygon_mesh_processing/triangulate_polyline_example.cpp.

template<typename PointRange , typename OutputIterator , typename CGAL_PMP_NP_TEMPLATE_PARAMETERS >

OutputIterator CGAL::Polygon_mesh_processing::triangulate_hole_polyline | ( | const PointRange & | points,
|  | OutputIterator | out,
|  | const CGAL_PMP_NP_CLASS & | np
| ) |  |

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.

`#include <CGAL/Polygon_mesh_processing/triangulate_hole.h>`

template<typename PolygonMesh , typename FaceOutputIterator , typename VertexOutputIterator , typename NamedParameters >

CGAL::cpp11::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.

Template Parameters

  PolygonMesh | a model of `MutableFaceGraph` that has an internal property map for `CGAL::vertex_point_t`
  FaceOutputIterator | model of `OutputIterator` holding `boost::graph_traits<PolygonMesh>::face_descriptor` for patch faces
  VertexOutputIterator | model of `OutputIterator` holding `boost::graph_traits<PolygonMesh>::vertex_descriptor` for patch vertices
  NamedParameters | a sequence of Named Parameters

Parameters

  pmesh | polygon mesh which has the hole
  border_halfedge | a border halfedge incident to the hole
  face_out | output iterator over patch faces
  vertex_out | output iterator over patch vertices without including the boundary
  np | optional sequence of Named Parameters among the ones listed below

Named Parameters

  vertex_point_map | the property map with the points associated to the vertices of `pmesh`
  use_delaunay_triangulation | if `true`, use the Delaunay triangulation facet search space
  density_control_factor | factor to control density of the ouput mesh, where larger values cause denser refinements, as in `refine()`
  fairing_continuity | tangential continuity of the output surface patch
  sparse_linear_solver | an instance of the sparse linear solver used for fairing
  geom_traits | a 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()

`#include <CGAL/Polygon_mesh_processing/triangulate_hole.h>`

Examples:
  Polygon_mesh_processing/hole_filling_example.cpp.