CGAL 6.2 - Polygon Mesh Processing: Geometric Measure Functions

CGAL 6.2 - Polygon Mesh Processing

Loading...
Searching...
No Matches
Functions
Geometric Measure Functions
Reference Manual

##

Functions to compute discrete curvatures, lengths of edges and borders, areas of faces and patches, volumes of closed meshes.

## Functions
template<typename PolygonMesh , typename NamedParameters = CGAL::parameters::Default_named_parameters>
FT | CGAL::Polygon_mesh_processing::angle_sum (typename boost::graph_traits< PolygonMesh >::vertex_descriptor v, const PolygonMesh &pmesh, const NamedParameters &np=parameters::default_values())
| computes the sum of the angles around a vertex.
template<typename TriangleMesh , typename NamedParameters = CGAL::parameters::Default_named_parameters>
FT | CGAL::Polygon_mesh_processing::discrete_Gaussian_curvature (typename boost::graph_traits< TriangleMesh >::vertex_descriptor v, const TriangleMesh &tmesh, const NamedParameters &np=parameters::default_values())
| computes the discrete Gaussian curvature at a vertex.
template<typename TriangleMesh , typename VertexCurvatureMap , typename NamedParameters = CGAL::parameters::Default_named_parameters>
void | CGAL::Polygon_mesh_processing::discrete_Gaussian_curvatures (const TriangleMesh &tmesh, VertexCurvatureMap vcm, const NamedParameters &np=parameters::default_values())
| computes the discrete Gaussian curvatures at the vertices of a mesh.
template<typename TriangleMesh , typename NamedParameters = CGAL::parameters::Default_named_parameters>
FT | CGAL::Polygon_mesh_processing::discrete_mean_curvature (typename boost::graph_traits< TriangleMesh >::vertex_descriptor v, const TriangleMesh &tmesh, const NamedParameters &np=parameters::default_values())
| computes the discrete mean curvature at a vertex.
template<typename TriangleMesh , typename VertexCurvatureMap , typename NamedParameters = CGAL::parameters::Default_named_parameters>
void | CGAL::Polygon_mesh_processing::discrete_mean_curvatures (const TriangleMesh &tmesh, VertexCurvatureMap vcm, const NamedParameters &np=parameters::default_values())
| computes the discrete mean curvatures at the vertices of a mesh.
template<typename PolygonMesh , typename NamedParameters = parameters::Default_named_parameters>
FT | CGAL::Polygon_mesh_processing::edge_length (typename boost::graph_traits< PolygonMesh >::halfedge_descriptor h, const PolygonMesh &pmesh, const NamedParameters &np=parameters::default_values())
| computes the length of an edge of a given polygon mesh.
template<typename PolygonMesh , typename NamedParameters = parameters::Default_named_parameters>
FT | CGAL::Polygon_mesh_processing::squared_edge_length (typename boost::graph_traits< PolygonMesh >::halfedge_descriptor h, const PolygonMesh &pmesh, const NamedParameters &np=parameters::default_values())
| computes the squared length of an edge of a given polygon mesh.
template<typename PolygonMesh , typename NamedParameters = parameters::Default_named_parameters>
FT | CGAL::Polygon_mesh_processing::face_border_length (typename boost::graph_traits< PolygonMesh >::halfedge_descriptor h, const PolygonMesh &pmesh, const NamedParameters &np=parameters::default_values())
| computes the length of the border polyline that contains a given halfedge.
template<typename PolygonMesh , typename NamedParameters = parameters::Default_named_parameters>
std::pair< halfedge_descriptor, FT > | CGAL::Polygon_mesh_processing::longest_border (const PolygonMesh &pmesh, const NamedParameters &np=parameters::default_values())
| finds the longest border of a given triangulated surface and returns a halfedge that is part of this border as well as the length of this border.
template<typename TriangleMesh , typename NamedParameters = CGAL::parameters::Default_named_parameters>
FT | CGAL::Polygon_mesh_processing::face_area (typename boost::graph_traits< TriangleMesh >::face_descriptor f, const TriangleMesh &tmesh, const NamedParameters &np=parameters::default_values())
| computes the area of a face of a given triangulated surface mesh.
template<typename TriangleMesh , typename NamedParameters = CGAL::parameters::Default_named_parameters>
FT | CGAL::Polygon_mesh_processing::squared_face_area (typename boost::graph_traits< TriangleMesh >::face_descriptor f, const TriangleMesh &tmesh, const NamedParameters &np=parameters::default_values())
| computes the squared area of a face of a given triangulated surface mesh.
template<typename FaceRange , typename TriangleMesh , typename NamedParameters = CGAL::parameters::Default_named_parameters>
FT | CGAL::Polygon_mesh_processing::area (const FaceRange &face_range, const TriangleMesh &tmesh, const NamedParameters &np=parameters::default_values())
| computes the area of a range of faces of a given triangulated surface mesh.
template<typename TriangleMesh , typename NamedParameters = CGAL::parameters::Default_named_parameters>
FT | CGAL::Polygon_mesh_processing::area (const TriangleMesh &tmesh, const NamedParameters &np=parameters::default_values())
| computes the surface area of a triangulated surface mesh.
template<typename TriangleMesh , typename NamedParameters = CGAL::parameters::Default_named_parameters>
FT | CGAL::Polygon_mesh_processing::volume (const TriangleMesh &tmesh, const NamedParameters &np=parameters::default_values())
| computes the volume of the domain bounded by a closed triangulated surface mesh.
template<typename TriangleMesh , typename NamedParameters = CGAL::parameters::Default_named_parameters>
FT | CGAL::Polygon_mesh_processing::face_aspect_ratio (typename boost::graph_traits< TriangleMesh >::face_descriptor f, const TriangleMesh &tmesh, const NamedParameters &np=parameters::default_values())
| computes the aspect ratio of a face of a given triangulated surface mesh.
template<typename TriangleMesh , typename NamedParameters = CGAL::parameters::Default_named_parameters>
Point_3 | CGAL::Polygon_mesh_processing::centroid (const TriangleMesh &tmesh, const NamedParameters &np=parameters::default_values())
| computes the centroid of a volume bounded by a closed triangulated surface mesh.
template<typename PolygonMesh1 , typename PolygonMesh2 , typename FacePairOutputIterator , typename FaceOutputIterator1 , typename FaceOutputIterator2 , typename NamedParameters1 = parameters::Default_named_parameters, typename NamedParameters2 = parameters::Default_named_parameters>
void | CGAL::Polygon_mesh_processing::match_faces (const PolygonMesh1 &m1, const PolygonMesh2 &m2, FacePairOutputIterator common, FaceOutputIterator1 m1_only, FaceOutputIterator2 m2_only, const NamedParameters1 &np1=parameters::default_values(), const NamedParameters2 &np2=parameters::default_values())
| identifies faces only present in `m1` and `m2` as well as the faces present in both polygon meshes.

## Function Documentation

## ◆ angle_sum()

template<typename PolygonMesh , typename NamedParameters = CGAL::parameters::Default_named_parameters>

FT CGAL::Polygon_mesh_processing::angle_sum | ( | typename boost::graph_traits< PolygonMesh >::vertex_descriptor | v,
|  | const PolygonMesh & | pmesh,
|  | const NamedParameters & | np = `parameters::default_values()`
| ) |  |

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

computes the sum of the angles around a vertex.

The angle sum is given in degrees.

Template Parameters

  PolygonMesh | a model of `FaceGraph`
  NamedParameters | a sequence of Named Parameters

Parameters

  v | the vertex whose sum of angles is computed
  pmesh | the polygon mesh to which `v` belongs
  np | an optional sequence of Named Parameters among the ones listed below

Optional Named Parameters

  a property map associating points to the vertices of `pmesh` Type: a class model of `ReadablePropertyMap` with `boost::graph_traits<PolygonMesh>::vertex_descriptor` as key type and `Point_3` as value type Default: `boost::get(CGAL::vertex_point, pmesh)` |
  an instance of a geometric traits class Type: The traits class must provide the nested functor `Compute_approximate_angle_3`, model of `Kernel::ComputeApproximateAngle_3`. Default: a CGAL kernel deduced from the point type, using `CGAL::Kernel_traits` Extra: The geometric traits class must be compatible with the vertex point type. |

Returns
  the sum of angles around `v`. The return type `FT` is a number type either deduced from the `geom_traits` Named Parameters if provided, or the geometric traits class deduced from the point property map of `pmesh`.

Warning
  This function involves trigonometry.

## ◆ area() [1/2]

template<typename FaceRange , typename TriangleMesh , typename NamedParameters = CGAL::parameters::Default_named_parameters>

FT CGAL::Polygon_mesh_processing::area | ( | const FaceRange & | face_range,
|  | const TriangleMesh & | tmesh,
|  | const NamedParameters & | np = `parameters::default_values()`
| ) |  |

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

computes the area of a range of faces of a given triangulated surface mesh.

Template Parameters

  FaceRange | range of `boost::graph_traits<PolygonMesh>::face_descriptor`, model of `Range`. Its iterator type is `InputIterator`.
  TriangleMesh | a model of `FaceGraph`
  NamedParameters | a sequence of Named Parameters

Parameters

  face_range | the range of faces of whose area is computed
  tmesh | the triangulated surface mesh to which the faces of `face_range` belong
  np | an optional sequence of Named Parameters among the ones listed below

Optional Named Parameters

  a property map associating points to the vertices of `tmesh` Type: a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::vertex_descriptor` as key type and `Point_3` as value type Default: `boost::get(CGAL::vertex_point, tmesh)` |
  an instance of a geometric traits class Type: a class model of `Kernel` Default: a CGAL Kernel deduced from the point type, using `CGAL::Kernel_traits` Extra: The geometric traits class must be compatible with the vertex point type. |

Returns
  sum of face areas of `faces`. The return type `FT` is a number type either deduced from the `geom_traits` Named Parameters if provided, or the geometric traits class deduced from the point property map of `tmesh`.

Warning
  This function involves a square root computation. If `Kernel::FT` does not support the `sqrt()` operation, the square root computation will be performed approximately.

See also
  `face_area()`

## ◆ area() [2/2]

template<typename TriangleMesh , typename NamedParameters = CGAL::parameters::Default_named_parameters>

FT CGAL::Polygon_mesh_processing::area | ( | const TriangleMesh & | tmesh,
|  | const NamedParameters & | np = `parameters::default_values()`
| ) |  |

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

computes the surface area of a triangulated surface mesh.

Template Parameters

  TriangleMesh | a model of `FaceGraph`
  NamedParameters | a sequence of Named Parameters

Parameters

  tmesh | the triangulated surface mesh
  np | an optional sequence of Named Parameters among the ones listed below

Optional Named Parameters

  a property map associating points to the vertices of `tmesh` Type: a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::vertex_descriptor` as key type and `Point_3` as value type Default: `boost::get(CGAL::vertex_point, tmesh)` |
  an instance of a geometric traits class Type: a class model of `Kernel` Default: a CGAL Kernel deduced from the point type, using `CGAL::Kernel_traits` Extra: The geometric traits class must be compatible with the vertex point type. |

Returns
  the surface area of `tmesh`. The return type `FT` is a number type either deduced from the `geom_traits` Named Parameters if provided, or the geometric traits class deduced from the point property map of `tmesh`.

Warning
  This function involves a square root computation. If `Kernel::FT` does not support the `sqrt()` operation, the square root computation will be performed approximately.

See also
  `face_area()`

## ◆ centroid()

template<typename TriangleMesh , typename NamedParameters = CGAL::parameters::Default_named_parameters>

Point_3 CGAL::Polygon_mesh_processing::centroid | ( | const TriangleMesh & | tmesh,
|  | const NamedParameters & | np = `parameters::default_values()`
| ) |  |

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

computes the centroid of a volume bounded by a closed triangulated surface mesh.

Template Parameters

  TriangleMesh | a model of `FaceListGraph`
  NamedParameters | a sequence of Named Parameters

Parameters

  tmesh | the closed triangulated surface mesh bounding the volume
  np | an optional sequence of Named Parameters among the ones listed below

Precondition
  `tmesh` is closed

Optional Named Parameters

  a property map associating points to the vertices of `tmesh` Type: a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::vertex_descriptor` as key type and `Point_3` as value type Default: `boost::get(CGAL::vertex_point, tmesh)` |
  an instance of a geometric traits class Type: a class model of `Kernel` Default: a CGAL Kernel deduced from the point type, using `CGAL::Kernel_traits` Extra: The geometric traits class must be compatible with the vertex point type. |

Returns
  the centroid of the domain bounded by `tmesh`.

## ◆ discrete_Gaussian_curvature()

template<typename TriangleMesh , typename NamedParameters = CGAL::parameters::Default_named_parameters>

FT CGAL::Polygon_mesh_processing::discrete_Gaussian_curvature | ( | typename boost::graph_traits< TriangleMesh >::vertex_descriptor | v,
|  | const TriangleMesh & | tmesh,
|  | const NamedParameters & | np = `parameters::default_values()`
| ) |  |

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

computes the discrete Gaussian curvature at a vertex.

We refer to Meyer et al. [6] for the definition of discrete Gaussian curvature.

Template Parameters

  TriangleMesh | a model of `FaceGraph`
  NamedParameters | a sequence of Named Parameters

Parameters

  v | the vertex whose discrete Gaussian curvature is being computed
  tmesh | the triangle mesh to which `v` belongs
  np | an optional sequence of Named Parameters among the ones listed below

Optional Named Parameters

  a property map associating points to the vertices of `tmesh` Type: a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::vertex_descriptor` as key type and `Point_3` as value type Default: `boost::get(CGAL::vertex_point, tmesh)` |
  an instance of a geometric traits class Type: The traits class must be a model of `Kernel`. Default: a CGAL kernel deduced from the point type, using `CGAL::Kernel_traits` Extra: The geometric traits class must be compatible with the vertex point type. |

Returns
  the discrete Gaussian curvature at `v`. The return type `FT` is a number type either deduced from the `geom_traits` Named Parameters if provided, or the geometric traits class deduced from the point property map of `tmesh`.

Warning
  This function involves trigonometry.
  The current formulation is not well defined for border vertices.

Precondition
  `tmesh` is a triangle mesh

## ◆ discrete_Gaussian_curvatures()

template<typename TriangleMesh , typename VertexCurvatureMap , typename NamedParameters = CGAL::parameters::Default_named_parameters>

void CGAL::Polygon_mesh_processing::discrete_Gaussian_curvatures | ( | const TriangleMesh & | tmesh,
|  | VertexCurvatureMap | vcm,
|  | const NamedParameters & | np = `parameters::default_values()`
| ) |  |

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

computes the discrete Gaussian curvatures at the vertices of a mesh.

We refer to Meyer et al. [6] for the definition of discrete Gaussian curvature.

Template Parameters

  TriangleMesh | a model of `FaceGraph` and `VertexListGraph`
  VertexCurvatureMap | must be a model of `WritablePropertyMap` with key type `boost::graph_traits<TriangleMesh>::vertex_descriptor` and value type `FT`, which is either `geom_traits::FT` if this named parameter is provided, or `kernel::FT` with the kernel deduced from the point property map of `tmesh`.
  NamedParameters | a sequence of Named Parameters

Parameters

  tmesh | the triangle mesh to which `v` belongs
  vcm | the property map that contains the computed discrete curvatures
  np | an optional sequence of Named Parameters among the ones listed below

Optional Named Parameters

  a property map associating points to the vertices of `tmesh` Type: a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::vertex_descriptor` as key type and `Point_3` as value type Default: `boost::get(CGAL::vertex_point, tmesh)` |
  an instance of a geometric traits class Type: The traits class must be a model of `Kernel`. Default: a CGAL kernel deduced from the point type, using `CGAL::Kernel_traits` Extra: The geometric traits class must be compatible with the vertex point type. |

Warning
  This function involves trigonometry.
  The current formulation is not well defined for border vertices.

Precondition
  `tmesh` is a triangle mesh

## ◆ discrete_mean_curvature()

template<typename TriangleMesh , typename NamedParameters = CGAL::parameters::Default_named_parameters>

FT CGAL::Polygon_mesh_processing::discrete_mean_curvature | ( | typename boost::graph_traits< TriangleMesh >::vertex_descriptor | v,
|  | const TriangleMesh & | tmesh,
|  | const NamedParameters & | np = `parameters::default_values()`
| ) |  |

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

computes the discrete mean curvature at a vertex.

We refer to Meyer et al. [6] for the definition of discrete mean curvature.

Template Parameters

  TriangleMesh | a model of `FaceGraph`
  NamedParameters | a sequence of Named Parameters

Parameters

  v | the vertex whose discrete mean curvature is being computed
  tmesh | the triangle mesh to which `v` belongs
  np | an optional sequence of Named Parameters among the ones listed below

Optional Named Parameters

  a property map associating points to the vertices of `tmesh` Type: a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::vertex_descriptor` as key type and `Point_3` as value type Default: `boost::get(CGAL::vertex_point, tmesh)` |
  an instance of a geometric traits class Type: The traits class must be a model of `Kernel`. Default: a CGAL kernel deduced from the point type, using `CGAL::Kernel_traits` Extra: The geometric traits class must be compatible with the vertex point type. |

Returns
  the discrete mean curvature at `v`. The return type `FT` is a number type either deduced from the `geom_traits` Named Parameters if provided, or the geometric traits class deduced from the point property map of `tmesh`.

Warning
  The current formulation is not well defined for border vertices.

Precondition
  `tmesh` is a triangle mesh

## ◆ discrete_mean_curvatures()

template<typename TriangleMesh , typename VertexCurvatureMap , typename NamedParameters = CGAL::parameters::Default_named_parameters>

void CGAL::Polygon_mesh_processing::discrete_mean_curvatures | ( | const TriangleMesh & | tmesh,
|  | VertexCurvatureMap | vcm,
|  | const NamedParameters & | np = `parameters::default_values()`
| ) |  |

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

computes the discrete mean curvatures at the vertices of a mesh.

We refer to Meyer et al. [6] for the definition of discrete mean curvature.

Template Parameters

  TriangleMesh | a model of `FaceGraph` and `VertexListGraph`
  VertexCurvatureMap | must be a model of `WritablePropertyMap` with key type `boost::graph_traits<TriangleMesh>::vertex_descriptor` and value type `FT`, which is either `geom_traits::FT` if this named parameter is provided, or `kernel::FT` with the kernel deduced from the point property map of `tmesh`.
  NamedParameters | a sequence of Named Parameters

Parameters

  tmesh | the triangle mesh to which `v` belongs
  vcm | the property map that contains the computed discrete curvatures
  np | an optional sequence of Named Parameters among the ones listed below

Optional Named Parameters

  a property map associating points to the vertices of `tmesh` Type: a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::vertex_descriptor` as key type and `Point_3` as value type Default: `boost::get(CGAL::vertex_point, tmesh)` |
  an instance of a geometric traits class Type: The traits class must be a model of `Kernel`. Default: a CGAL kernel deduced from the point type, using `CGAL::Kernel_traits` Extra: The geometric traits class must be compatible with the vertex point type. |

Warning
  The current formulation is not well defined for border vertices.

Precondition
  `tmesh` is a triangle mesh

## ◆ edge_length()

template<typename PolygonMesh , typename NamedParameters = parameters::Default_named_parameters>

FT CGAL::Polygon_mesh_processing::edge_length | ( | typename boost::graph_traits< PolygonMesh >::halfedge_descriptor | h,
|  | const PolygonMesh & | pmesh,
|  | const NamedParameters & | np = `parameters::default_values()`
| ) |  |

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

computes the length of an edge of a given polygon mesh.

The edge is given by one of its halfedges, or the edge itself.

Template Parameters

  PolygonMesh | a model of `HalfedgeGraph`
  NamedParameters | a sequence of Named Parameters

Parameters

  h | one halfedge of the edge whose length is computed
  pmesh | the polygon mesh to which `h` belongs
  np | an optional sequence of Named Parameters among the ones listed below

Optional Named Parameters

  a property map associating points to the vertices of `pmesh` Type: a class model of `ReadablePropertyMap` with `boost::graph_traits<PolygonMesh>::vertex_descriptor` as key type and `Point_3` as value type Default: `boost::get(CGAL::vertex_point, pmesh)` |
  an instance of a geometric traits class Type: a class model of `Kernel` Default: a CGAL Kernel deduced from the point type, using `CGAL::Kernel_traits` Extra: The geometric traits class must be compatible with the vertex point type. |

Returns
  the length of `h`. The return type `FT` is a number type either deduced from the `geom_traits` Named Parameters if provided, or the geometric traits class deduced from the point property map of `pmesh`.

Warning
  This function involves a square root computation. If `FT` does not support the `sqrt()` operation, the square root computation will be performed approximately.

See also
  `squared_edge_length()`
  `face_border_length()`

Examples
  Polygon_mesh_processing/polyhedral_envelope_mesh_containment.cpp.

## ◆ face_area()

template<typename TriangleMesh , typename NamedParameters = CGAL::parameters::Default_named_parameters>

FT CGAL::Polygon_mesh_processing::face_area | ( | typename boost::graph_traits< TriangleMesh >::face_descriptor | f,
|  | const TriangleMesh & | tmesh,
|  | const NamedParameters & | np = `parameters::default_values()`
| ) |  |

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

computes the area of a face of a given triangulated surface mesh.

Template Parameters

  TriangleMesh | a model of `FaceGraph`
  NamedParameters | a sequence of Named Parameters

Parameters

  f | the face whose area is computed
  tmesh | the triangulated surface mesh to which `f` belongs
  np | an optional sequence of Named Parameters among the ones listed below

Optional Named Parameters

  a property map associating points to the vertices of `tmesh` Type: a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::vertex_descriptor` as key type and `Point_3` as value type Default: `boost::get(CGAL::vertex_point, tmesh)` |
  an instance of a geometric traits class Type: a class model of `Kernel` Default: a CGAL Kernel deduced from the point type, using `CGAL::Kernel_traits` Extra: The geometric traits class must be compatible with the vertex point type. |

Precondition
  `f != boost::graph_traits<TriangleMesh>::null_face()`

Returns
  the area of `f`. The return type `FT` is a number type either deduced from the `geom_traits` Named Parameters if provided, or the geometric traits class deduced from the point property map of `tmesh`.

Warning
  This function involves a square root computation. If `Kernel::FT` does not support the `sqrt()` operation, the square root computation will be performed approximately.

See also
  `squared_face_area()`
  `area()`

## ◆ face_aspect_ratio()

template<typename TriangleMesh , typename NamedParameters = CGAL::parameters::Default_named_parameters>

FT CGAL::Polygon_mesh_processing::face_aspect_ratio | ( | typename boost::graph_traits< TriangleMesh >::face_descriptor | f,
|  | const TriangleMesh & | tmesh,
|  | const NamedParameters & | np = `parameters::default_values()`
| ) |  |

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

computes the aspect ratio of a face of a given triangulated surface mesh.

Template Parameters

  TriangleMesh | a model of `HalfedgeGraph`
  NamedParameters | a sequence of Named Parameters

Parameters

  f | the face whose aspect ratio is computed
  tmesh | the triangulated surface mesh to which `f` belongs
  np | an optional sequence of Named Parameters among the ones listed below

Optional Named Parameters

  a property map associating points to the vertices of `tmesh` Type: a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::vertex_descriptor` as key type and `Point_3` as value type Default: `boost::get(CGAL::vertex_point, tmesh)` |
  an instance of a geometric traits class Type: a class model of `Kernel` Default: a CGAL Kernel deduced from the point type, using `CGAL::Kernel_traits` Extra: The geometric traits class must be compatible with the vertex point type. |

Precondition
  `f != boost::graph_traits<TriangleMesh>::null_face()`

Returns
  the aspect ratio of `f`. The return type `FT` is a number type either deduced from the `geom_traits` Named Parameters if provided, or the geometric traits class deduced from the point property map of `tmesh`.

Warning
  This function involves a square root computation. If `Kernel::FT` does not support the `sqrt()` operation, the square root computation will be performed approximately.

## ◆ face_border_length()

template<typename PolygonMesh , typename NamedParameters = parameters::Default_named_parameters>

FT CGAL::Polygon_mesh_processing::face_border_length | ( | typename boost::graph_traits< PolygonMesh >::halfedge_descriptor | h,
|  | const PolygonMesh & | pmesh,
|  | const NamedParameters & | np = `parameters::default_values()`
| ) |  |

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

computes the length of the border polyline that contains a given halfedge.

Template Parameters

  PolygonMesh | a model of `HalfedgeGraph`
  NamedParameters | a sequence of Named Parameters

Parameters

  h | a halfedge of the border polyline whose length is computed
  pmesh | the polygon mesh to which `h` belongs
  np | an optional sequence of Named Parameters among the ones listed below

Optional Named Parameters

  a property map associating points to the vertices of `pmesh` Type: a class model of `ReadablePropertyMap` with `boost::graph_traits<PolygonMesh>::vertex_descriptor` as key type and `Point_3` as value type Default: `boost::get(CGAL::vertex_point, pmesh)` |
  an instance of a geometric traits class Type: a class model of `Kernel` Default: a CGAL Kernel deduced from the point type, using `CGAL::Kernel_traits` Extra: The geometric traits class must be compatible with the vertex point type. |

Returns
  the length of the sequence of border edges of `face(h, pmesh)`. The return type `FT` is a number type either deduced from the `geom_traits` Named Parameters if provided, or the geometric traits class deduced from the point property map of `pmesh`.

Warning
  This function involves a square root computation. If `Kernel::FT` does not support the `sqrt()` operation, the square root computation will be performed approximately.

See also
  `edge_length()`

## ◆ longest_border()

template<typename PolygonMesh , typename NamedParameters = parameters::Default_named_parameters>

std::pair< halfedge_descriptor, FT > CGAL::Polygon_mesh_processing::longest_border | ( | const PolygonMesh & | pmesh,
|  | const NamedParameters & | np = `parameters::default_values()`
| ) |  |

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

finds the longest border of a given triangulated surface and returns a halfedge that is part of this border as well as the length of this border.

Template Parameters

  PolygonMesh | a model of `HalfedgeGraph`
  NamedParameters | a sequence of Named Parameters

Parameters

  pmesh | the polygon mesh
  np | an optional sequence of Named Parameters among the ones listed below

Optional Named Parameters

  a property map associating points to the vertices of `pmesh` Type: a class model of `ReadablePropertyMap` with `boost::graph_traits<PolygonMesh>::vertex_descriptor` as key type and `Point_3` as value type Default: `boost::get(CGAL::vertex_point, pmesh)` |
  an instance of a geometric traits class Type: a class model of `Kernel` Default: a CGAL Kernel deduced from the point type, using `CGAL::Kernel_traits` Extra: The geometric traits class must be compatible with the vertex point type. |

Returns
  a pair composed of two members:
  - `first`: a halfedge on the longest border. The return type `halfedge_descriptor` is a halfedge descriptor. It is deduced from the graph traits corresponding to the type `PolygonMesh`. `first` is among the halfedges reported by `extract_boundary_cycles()`.
  - `second`: the length of the longest border The return type `FT` is a number type either deduced from the `geom_traits` Named Parameters if provided, or the geometric traits class deduced from the point property map of `pmesh`

Warning
  This function involves a square root computation. If `Kernel::FT` does not support the `sqrt()` operation, the square root computation will be performed approximately.

See also
  `face_border_length()`
  `extract_boundary_cycles()`

## ◆ match_faces()

template<typename PolygonMesh1 , typename PolygonMesh2 , typename FacePairOutputIterator , typename FaceOutputIterator1 , typename FaceOutputIterator2 , typename NamedParameters1 = parameters::Default_named_parameters, typename NamedParameters2 = parameters::Default_named_parameters>

void CGAL::Polygon_mesh_processing::match_faces | ( | const PolygonMesh1 & | m1,
|  | const PolygonMesh2 & | m2,
|  | FacePairOutputIterator | common,
|  | FaceOutputIterator1 | m1_only,
|  | FaceOutputIterator2 | m2_only,
|  | const NamedParameters1 & | np1 = `parameters::default_values()`,
|  | const NamedParameters2 & | np2 = `parameters::default_values()`
| ) |  |

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

identifies faces only present in `m1` and `m2` as well as the faces present in both polygon meshes.

Two faces are matching if they have the same orientation and the same points.

Template Parameters

  PolygonMesh1 | a model of `HalfedgeListGraph` and `FaceListGraph`
  PolygonMesh2 | a model of `HalfedgeListGraph` and `FaceListGraph`
  FaceOutputIterator1 | model of `OutputIterator` holding `boost::graph_traits<PolygonMesh1>::face_descriptor`.
  FaceOutputIterator2 | model of `OutputIterator` holding `boost::graph_traits<PolygonMesh2>::face_descriptor`.
  FacePairOutputIterator | model of `OutputIterator` holding `std::pair<boost::graph_traits<PolygonMesh1>::face_descriptor, boost::graph_traits<PolygonMesh2>::face_descriptor`.
  NamedParameters1 | a sequence of Named Parameters
  NamedParameters2 | a sequence of Named Parameters

Parameters

  m1 | the first polygon mesh
  m2 | the second polygon mesh
  common | output iterator collecting the faces that are common to both meshes
  m1_only | output iterator collecting the faces that are only in `m1`
  m2_only | output iterator collecting the faces that are only in `m2`
  np1 | an optional sequence of Named Parameters among the ones listed below
  np2 | an optional sequence of Named Parameters among the ones listed below

Optional Named Parameters

  a property map associating points to the vertices of `m1` Type: a class model of `ReadablePropertyMap` with `boost::graph_traits<PolygonMesh1>::vertex_descriptor` as key type and `Point_3` as value type. `Point_3` must be `LessThanComparable`. Default: `boost::get(CGAL::vertex_point, m1)` Extra: The same holds for `m2` and `PolygonMesh2` and the point type must be the same for both meshes. |
  a property map associating to each vertex of `m1` a unique index between `0` and `num_vertices(m1) - 1`, and similarly for `m2`. Type: a class model of `ReadablePropertyMap` with `boost::graph_traits<Graph>::vertex_descriptor` as key type and `std::size_t` as value type Default: an automatically indexed internal map Extra: If this parameter is not passed, internal machinery will create and initialize a face index property map, either using the internal property map if it exists or using an external map. The latter might result in - slightly - worsened performance in case of non-constant complexity for index access. The same holds for `m2` and `PolygonMesh2`. |

## ◆ squared_edge_length()

template<typename PolygonMesh , typename NamedParameters = parameters::Default_named_parameters>

FT CGAL::Polygon_mesh_processing::squared_edge_length | ( | typename boost::graph_traits< PolygonMesh >::halfedge_descriptor | h,
|  | const PolygonMesh & | pmesh,
|  | const NamedParameters & | np = `parameters::default_values()`
| ) |  |

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

computes the squared length of an edge of a given polygon mesh.

The edge is given by one of its halfedges, or the edge itself.

Template Parameters

  PolygonMesh | a model of `HalfedgeGraph`
  NamedParameters | a sequence of Named Parameters

Parameters

  h | one halfedge of the edge whose squared length is computed
  pmesh | the polygon mesh to which `h` belongs
  np | an optional sequence of Named Parameters among the ones listed below

Optional Named Parameters

  a property map associating points to the vertices of `pmesh` Type: a class model of `ReadablePropertyMap` with `boost::graph_traits<PolygonMesh>::vertex_descriptor` as key type and `Point_3` as value type Default: `boost::get(CGAL::vertex_point, pmesh)` |
  an instance of a geometric traits class Type: a class model of `Kernel` Default: a CGAL Kernel deduced from the point type, using `CGAL::Kernel_traits` Extra: The geometric traits class must be compatible with the vertex point type. |

Returns
  the squared length of `h`. The return type `FT` is a number type either deduced from the `geom_traits` Named Parameters if provided, or the geometric traits class deduced from the point property map of `pmesh`.

See also
  `edge_length()`
  `face_border_length()`

## ◆ squared_face_area()

template<typename TriangleMesh , typename NamedParameters = CGAL::parameters::Default_named_parameters>

FT CGAL::Polygon_mesh_processing::squared_face_area | ( | typename boost::graph_traits< TriangleMesh >::face_descriptor | f,
|  | const TriangleMesh & | tmesh,
|  | const NamedParameters & | np = `parameters::default_values()`
| ) |  |

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

computes the squared area of a face of a given triangulated surface mesh.

Template Parameters

  TriangleMesh | a model of `FaceGraph`
  NamedParameters | a sequence of Named Parameters

Parameters

  f | the face whose squared area is computed
  tmesh | the triangulated surface mesh to which `f` belongs
  np | an optional sequence of Named Parameters among the ones listed below

Optional Named Parameters

  a property map associating points to the vertices of `tmesh` Type: a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::vertex_descriptor` as key type and `Point_3` as value type Default: `boost::get(CGAL::vertex_point, tmesh)` |
  an instance of a geometric traits class Type: a class model of `Kernel` Default: a CGAL Kernel deduced from the point type, using `CGAL::Kernel_traits` Extra: The geometric traits class must be compatible with the vertex point type. |

Precondition
  `f != boost::graph_traits<TriangleMesh>::null_face()`

Returns
  the squared area of `f`. The return type `FT` is a number type either deduced from the `geom_traits` Named Parameters if provided, or the geometric traits class deduced from the point property map of `tmesh`.

See also
  `face_area()`

## ◆ volume()

template<typename TriangleMesh , typename NamedParameters = CGAL::parameters::Default_named_parameters>

FT CGAL::Polygon_mesh_processing::volume | ( | const TriangleMesh & | tmesh,
|  | const NamedParameters & | np = `parameters::default_values()`
| ) |  |

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

computes the volume of the domain bounded by a closed triangulated surface mesh.

Template Parameters

  TriangleMesh | a model of `HalfedgeGraph`
  NamedParameters | a sequence of Named Parameters

Parameters

  tmesh | the closed triangulated surface mesh bounding the volume
  np | an optional sequence of Named Parameters among the ones listed below

Precondition
  `tmesh` is closed

Optional Named Parameters

  a property map associating points to the vertices of `tmesh` Type: a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::vertex_descriptor` as key type and `Point_3` as value type Default: `boost::get(CGAL::vertex_point, tmesh)` |
  an instance of a geometric traits class Type: a class model of `Kernel` Default: a CGAL Kernel deduced from the point type, using `CGAL::Kernel_traits` Extra: The geometric traits class must be compatible with the vertex point type. |

Returns
  the volume bounded by `tmesh`. The return type `FT` is a number type either deduced from the `geom_traits` Named Parameters if provided, or the geometric traits class deduced from the point property map of `tmesh`.