\( \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
Modules | Files | Classes | Functions
Polygon Mesh Processing Reference

##

Sébastien Loriot, Jane Tournois, Ilker O. Yaz
This package provides a collection of methods and classes for polygon mesh processing, ranging from basic operations on simplices, to complex geometry processing algorithms.

Introduced in: CGAL 4.7
Depends on: documented for each function; CGAL and Solvers
BibTeX: cgal:lty-pmp-16a
License: GPL
Windows Demo: Operations on Polyhedra
Common Demo Dlls: dlls

## Classified Reference Pages

## Parameters

Optional parameters of the functions of this package are implemented as BGL named parameters. The page Named Parameters describes their usage and provides a list of the parameters that are used in this package.

## Meshing Functions

- `CGAL::Polygon_mesh_processing::fair()`
- `CGAL::Polygon_mesh_processing::refine()`
- `CGAL::Polygon_mesh_processing::triangulate_faces()`
- `CGAL::Polygon_mesh_processing::isotropic_remeshing()`
- `CGAL::Polygon_mesh_processing::split_long_edges()`

## Hole Filling Functions

- `CGAL::Polygon_mesh_processing::triangulate_hole()`
- `CGAL::Polygon_mesh_processing::triangulate_and_refine_hole()`
- `CGAL::Polygon_mesh_processing::triangulate_refine_and_fair_hole()`
- `CGAL::Polygon_mesh_processing::triangulate_hole_polyline()`

## Predicate Functions

- `CGAL::Polygon_mesh_processing::does_self_intersect()`
- `CGAL::Polygon_mesh_processing::self_intersections()`

## Orientation Functions

- `CGAL::Polygon_mesh_processing::is_outward_oriented()`
- `CGAL::Polygon_mesh_processing::reverse_face_orientations()`
- `CGAL::Polygon_mesh_processing::orient_polygon_soup()`

## Combinatorial Repairing Functions

- `CGAL::Polygon_mesh_processing::stitch_borders()`
- `CGAL::Polygon_mesh_processing::polygon_soup_to_polygon_mesh()`
- `CGAL::Polygon_mesh_processing::remove_isolated_vertices()`

## Normal Computation Functions

- `CGAL::Polygon_mesh_processing::compute_face_normal()`
- `CGAL::Polygon_mesh_processing::compute_face_normals()`
- `CGAL::Polygon_mesh_processing::compute_vertex_normal()`
- `CGAL::Polygon_mesh_processing::compute_vertex_normals()`
- `CGAL::Polygon_mesh_processing::compute_normals()`

## Connected Components

- `CGAL::Polygon_mesh_processing::connected_component()`
- `CGAL::Polygon_mesh_processing::connected_components()`
- `CGAL::Polygon_mesh_processing::keep_large_connected_components()`
- `CGAL::Polygon_mesh_processing::keep_largest_connected_components()`
- `CGAL::Polygon_mesh_processing::keep_connected_components()`
- `CGAL::Polygon_mesh_processing::remove_connected_components()`

## Geometric Measure functions

- `CGAL::Polygon_mesh_processing::face_area()`
- `CGAL::Polygon_mesh_processing::area()`
- `CGAL::Polygon_mesh_processing::volume()`
- `CGAL::Polygon_mesh_processing::edge_length()`
- `CGAL::Polygon_mesh_processing::face_border_length()`

## Miscellaneous

- `CGAL::Polygon_mesh_slicer`
- `CGAL::Side_of_triangle_mesh`
- `CGAL::Polygon_mesh_processing::bbox_3()`
- `CGAL::Polygon_mesh_processing::border_halfedges()`

## Modules
| Named Parameters
| How to use BGL Optional Named Parameters
| Concepts
| Connected Components
| Two faces are in the same connected component if there is a path of adjacent faces such that all edges between two consecutive faces of the path are not marked as constrained.
| Hole Filling
| Functions to fill holes given as a range of halfedges or as range of points.
| Meshing
| Functions to triangulate faces, and to refine and fair regions of a polygon mesh.
| Normal Computation
| Functions to compute unit normals for individual/all vertices or faces.
| Geometric Measure Functions
| Functions to compute lengths of edges and borders, areas of faces and patches, as well as volunes of closed meshes.
| Intersection Functions
| Functions to test if there are self intersections, and to report faces that do intersect.
| Combinatorial Repairing
| Functions to orient polygon soups and to stitch geometrically identical boundaries.

## Files
file | polygon_mesh_processing.h
| Convenience header file including the headers for all the free functions of this package.

## Classes
class | CGAL::Side_of_triangle_mesh< TriangleMesh, GeomTraits, VertexPointMap >
| This class provides an efficient point location functionality with respect to a domain bounded by one or several disjoint closed triangle meshes. More...
class | CGAL::Polygon_mesh_slicer< TriangleMesh, Traits, VertexPointMap, AABBTree, UseParallelPlaneOptimization >
| Function object that computes the intersection of a plane with a triangulated surface mesh. More...

## Functions
template<typename PolygonMesh , typename NamedParameters >
CGAL::Bbox_3 | CGAL::Polygon_mesh_processing::bbox_3 (const PolygonMesh &pmesh, const NamedParameters &np)
| computes a bounding box of a polygon mesh. More...
template<typename PolygonMesh , typename FaceRange , typename HalfedgeOutputIterator , typename NamedParameters >
HalfedgeOutputIterator | CGAL::Polygon_mesh_processing::border_halfedges (const FaceRange &faces, const PolygonMesh &pmesh, HalfedgeOutputIterator out, const NamedParameters &np)
| collects the border of a surface patch defined as a face range. More...
template<class PolygonMesh >
std::size_t | CGAL::Polygon_mesh_processing::remove_isolated_vertices (PolygonMesh &pmesh)
| removes the isolated vertices from any polygon mesh. More...

## Function Documentation

template<typename PolygonMesh , typename NamedParameters >

CGAL::Bbox_3 CGAL::Polygon_mesh_processing::bbox_3 | ( | const PolygonMesh & | pmesh,
|  | const NamedParameters & | np
| ) |  |

computes a bounding box of a polygon mesh.

Template Parameters

  PolygonMesh | a model of `HalfedgeListGraph` that has an internal property map for `CGAL::vertex_point_t`
  NamedParameters | a sequence of Named Parameters

Parameters

  pmesh | a polygon mesh
  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`

Returns
  a bounding box of `pmesh`

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

template<typename PolygonMesh , typename FaceRange , typename HalfedgeOutputIterator , typename NamedParameters >

HalfedgeOutputIterator CGAL::Polygon_mesh_processing::border_halfedges | ( | const FaceRange & | faces,
|  | const PolygonMesh & | pmesh,
|  | HalfedgeOutputIterator | out,
|  | const NamedParameters & | np
| ) |  |

collects the border of a surface patch defined as a face range.

The border is "seen from inside" the patch, i.e. the collected halfedges are the ones that belong to the input faces.

Template Parameters

  PolygonMesh | model of `HalfedgeGraph`
  FaceRange | range of `boost::graph_traits<PolygonMesh>::face_descriptor`, model of `Range`. Its iterator type is `InputIterator`.
  HalfedgeOutputIterator | model of `OutputIterator` holding `boost::graph_traits<PolygonMesh>::halfedge_descriptor` for patch border
  NamedParameters | a sequence of Named Parameters

Parameters

  pmesh | the polygon mesh to which `faces` belong
  faces | the range of faces defining the patch around which the border is collected
  out | the output iterator that collects halfedges that form the border of `faces`, seen from inside the surface patch
  np | optional sequence of Named Parameters among the ones listed below

Named Parameters

  face_index_map | a property map containing the index of each face of `pmesh`

Returns
  `out`

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

Examples:
  Polygon_mesh_processing/isotropic_remeshing_example.cpp.

template<class PolygonMesh >

std::size_t CGAL::Polygon_mesh_processing::remove_isolated_vertices | ( | PolygonMesh & | pmesh) |  |

removes the isolated vertices from any polygon mesh.

A vertex is considered isolated if it is not incident to any simplex of higher dimension.

Template Parameters

  PolygonMesh | a model of `FaceListGraph` and `MutableFaceGraph`

Parameters

  pmesh | the polygon mesh to be repaired

Returns
  number of removed isolated vertices

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