CGAL 4.7 - Triangulated Surface Mesh Shortest Paths: SurfaceMeshShortestPathVisitor Concept Reference

\( \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.7 - Triangulated Surface Mesh Shortest Paths

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
List of all members
SurfaceMeshShortestPathVisitor Concept Reference
Concepts

## Definition

The concept `SurfaceMeshShortestPathVisitor` describes the requirements of the visitor type used to collect the edges and vertices traversed by a shortest path on the surface of a triangulated surface mesh.

The methods are called in the order of the shortest path sequence along the surface, starting with the target point and ending with the source point.

## Methods

void | operator() (halfedge_descriptor edge, FT alpha)
| Called when an edge was traversed in the shortest path sequence. More...
void | operator() (vertex_descriptor vertex)
| Called when a vertex is encountered in the shortest path sequence. More...
void | operator() (face_descriptor face, Barycentric_coordinate location)
| Called when a face location is encountered in the shortest path sequence. More...

## Member Function Documentation

void SurfaceMeshShortestPathVisitor::operator() | ( | halfedge_descriptor | edge,
|  | FT | alpha
| ) |  |

Called when an edge was traversed in the shortest path sequence.

Parameters

  edge | halfedge of the surface mesh crossed by the shortest path. The halfedge is directed toward the face nearest to the target point.

  alpha

  value in the range [0.0,1.0] specifying where along `edge` the shortest path crossed.
  - 0.0 means it crossed at `source(edge)`
  - 1.0 means it crossed at `target(edge)`
  - Any other value is linearly interpolated between the endpoints.

Note that values of 0.0 and 1.0 are possible in some situations, and may not be reported as vertices. In particular, this will occur if the vertex crossed by the path is not a saddle vertex (less than \(2\pi\) surface area). This is because from the perspective of the algorithm, this is indistinguishable from crossing anywhere else along the edge.

void SurfaceMeshShortestPathVisitor::operator() | ( | vertex_descriptor | vertex) |  |

Called when a vertex is encountered in the shortest path sequence.

Parameters

  vertex | the vertex of the surface mesh encountered by the shortest path.

void SurfaceMeshShortestPathVisitor::operator() | ( | face_descriptor | face,
|  | Barycentric_coordinate | location
| ) |  |

Called when a face location is encountered in the shortest path sequence.

Remarks
  This will only be called as the first and/or last element in the path sequence, and only if the target/source point is an internal face location (i.e. not on an edge or at a vertex).

Parameters

  face | a face of the surface mesh encountered at the start or the end of the shortest path.
  location | the barycentric coordinate inside `face` of this point on the path.