CGAL 4.12.1 - Polygon Mesh Processing
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-18b
License: GPL
Windows Demo: Polyhedron demo
Common Demo Dlls: dlls

## Parameters

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

## Modules

Named Parameters for Polygon Mesh Processing
In this package, all functions optional parameters are implemented as BGL optional named parameters (see Named Parameters for more information on how to use them).

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 volumes of closed meshes.

Orientation Functions
Functions to compute or change the orientation of faces and surfaces.

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.

Distance Functions
Functions to compute the distance between meshes, between a mesh and a point set and between a point set and a mesh.

Corefinement and Boolean Operations
Functions to corefine triangulated surface meshes and compute triangulated surface meshes of the union, difference and intersection of the bounded volumes.

Feature Detection Functions
Functions to detect sharp edges and surface patches of polygon meshes.

Intersection Detection Functions
Functions to detect intersections.

## 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 CGAL_PMP_NP_TEMPLATE_PARAMETERS >
CGAL::Bbox_3 CGAL::Polygon_mesh_processing::bbox (const PolygonMesh &pmesh, const CGAL_PMP_NP_CLASS &np)
computes a bounding box of a polygon mesh. More...

template<typename PolygonMesh , typename NamedParameters >
CGAL::Bbox_3 CGAL::Polygon_mesh_processing::vertex_bbox (typename boost::graph_traits< PolygonMesh >::vertex_descriptor vd, const PolygonMesh &pmesh, const NamedParameters &np)
computes a bounding box of a vertex of a polygon mesh. More...

template<typename PolygonMesh , typename NamedParameters >
CGAL::Bbox_3 CGAL::Polygon_mesh_processing::edge_bbox (typename boost::graph_traits< PolygonMesh >::edge_descriptor ed, const PolygonMesh &pmesh, const NamedParameters &np)
computes a bounding box of an edge of a polygon mesh. More...

template<typename PolygonMesh , typename NamedParameters >
CGAL::Bbox_3 CGAL::Polygon_mesh_processing::face_bbox (typename boost::graph_traits< PolygonMesh >::face_descriptor fd, const PolygonMesh &pmesh, const NamedParameters &np)
computes a bounding box of a face of a polygon mesh. More...

template<typename PolygonMesh , typename CGAL_PMP_NP_TEMPLATE_PARAMETERS >
CGAL_DEPRECATED CGAL::Bbox_3 CGAL::Polygon_mesh_processing::bbox_3 (const PolygonMesh &pmesh, const CGAL_PMP_NP_CLASS &np)

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 halfedges of a surface patch defined as a face range. More...

## ◆ bbox()

template<typename PolygonMesh , typename CGAL_PMP_NP_TEMPLATE_PARAMETERS >
 CGAL::Bbox_3 CGAL::Polygon_mesh_processing::bbox ( const PolygonMesh & pmesh, const CGAL_PMP_NP_CLASS & np )

#include <CGAL/Polygon_mesh_processing/bbox.h>

computes a bounding box of a polygon mesh.

Template Parameters
 PolygonMesh a model of HalfedgeListGraph 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. If this parameter is omitted, an internal property map for CGAL::vertex_point_t should be available in PolygonMesh geom_traits an instance of a geometric traits class, providing the functor Construct_bbox_3 and the function Construct_bbox_3 construct_bbox_3_object(). Construct_bbox_3 must provide BBox_3 operator()(Point_3) where Point_3 is the value type of the vertex point map.
Returns
a bounding box of pmesh

## ◆ bbox_3()

template<typename PolygonMesh , typename CGAL_PMP_NP_TEMPLATE_PARAMETERS >
 CGAL_DEPRECATED CGAL::Bbox_3 CGAL::Polygon_mesh_processing::bbox_3 ( const PolygonMesh & pmesh, const CGAL_PMP_NP_CLASS & np )

#include <CGAL/Polygon_mesh_processing/bbox.h>

Deprecated:
This function is deprecated since CGAL 4.10, CGAL::Polygon_mesh_processing::bbox() should be used instead.

## ◆ border_halfedges()

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 )

#include <CGAL/Polygon_mesh_processing/border.h>

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

For each returned halfedge h, opposite(h, pmesh) belongs to a face of the patch, but face(h, pmesh) does not belong to the patch.

Template Parameters
 PolygonMesh model of HalfedgeGraph. If PolygonMesh has an internal property map for CGAL::face_index_t and no face_index_map is given as a named parameter, then the internal one should be initialized FaceRange range of boost::graph_traits::face_descriptor, model of Range. Its iterator type is InputIterator. HalfedgeOutputIterator model of OutputIterator holding boost::graph_traits::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 whose border halfedges are collected out the output iterator that collects the border halfedges of the patch, seen from outside. 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
Examples:
Polygon_mesh_processing/isotropic_remeshing_example.cpp.

## ◆ edge_bbox()

template<typename PolygonMesh , typename NamedParameters >
 CGAL::Bbox_3 CGAL::Polygon_mesh_processing::edge_bbox ( typename boost::graph_traits< PolygonMesh >::edge_descriptor ed, const PolygonMesh & pmesh, const NamedParameters & np )

#include <CGAL/Polygon_mesh_processing/bbox.h>

computes a bounding box of an edge of a polygon mesh.

Template Parameters
 PolygonMesh a model of HalfedgeGraph NamedParameters a sequence of Named Parameters
Parameters
 ed a descriptor of an edge in pmesh 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. If this parameter is omitted, an internal property map for CGAL::vertex_point_t should be available in PolygonMesh geom_traits an instance of a geometric traits class, providing the functor Construct_bbox_3 and the function Construct_bbox_3 construct_bbox_3_object(). Construct_bbox_3 must provide BBox_3 operator()(Point_3) where Point_3 is the value type of the vertex point map.
Returns
a bounding box of pmesh

## ◆ face_bbox()

template<typename PolygonMesh , typename NamedParameters >
 CGAL::Bbox_3 CGAL::Polygon_mesh_processing::face_bbox ( typename boost::graph_traits< PolygonMesh >::face_descriptor fd, const PolygonMesh & pmesh, const NamedParameters & np )

#include <CGAL/Polygon_mesh_processing/bbox.h>

computes a bounding box of a face of a polygon mesh.

Template Parameters
 PolygonMesh a model of HalfedgeGraph NamedParameters a sequence of Named Parameters
Parameters
 fd a descriptor of a face in pmesh 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. If this parameter is omitted, an internal property map for CGAL::vertex_point_t should be available in PolygonMesh geom_traits an instance of a geometric traits class, providing the functor Construct_bbox_3 and the function Construct_bbox_3 construct_bbox_3_object(). Construct_bbox_3 must provide BBox_3 operator()(Point_3) where Point_3 is the value type of the vertex point map.
Returns
a bounding box of pmesh

## ◆ vertex_bbox()

template<typename PolygonMesh , typename NamedParameters >
 CGAL::Bbox_3 CGAL::Polygon_mesh_processing::vertex_bbox ( typename boost::graph_traits< PolygonMesh >::vertex_descriptor vd, const PolygonMesh & pmesh, const NamedParameters & np )

#include <CGAL/Polygon_mesh_processing/bbox.h>

computes a bounding box of a vertex of a polygon mesh.

Template Parameters
 PolygonMesh a model of HalfedgeGraph NamedParameters a sequence of Named Parameters
Parameters
 vd a descriptor of a vertex in pmesh 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. If this parameter is omitted, an internal property map for CGAL::vertex_point_t should be available in PolygonMesh geom_traits an instance of a geometric traits class, providing the functor Construct_bbox_3 and the function Construct_bbox_3 construct_bbox_3_object(). Construct_bbox_3 must provide BBox_3 operator()(Point_3) where Point_3 is the value type of the vertex point map.
Returns
a bounding box of pmesh