GitHub link
PMP
The Polygon Mesh Processing Library
SurfaceGeodesic Class Reference

Compute geodesic distance from a set of seed vertices. More...

#include <pmp/algorithms/SurfaceGeodesic.h>

Public Member Functions

 SurfaceGeodesic (SurfaceMesh &mesh, bool use_virtual_edges=true)
 Construct from mesh. More...
 
unsigned int compute (const std::vector< Vertex > &seed, Scalar maxdist=std::numeric_limits< Scalar >::max(), unsigned int maxnum=INT_MAX, std::vector< Vertex > *neighbors=nullptr)
 Compute geodesic distances from specified seed points. More...
 
Scalar operator() (Vertex v) const
 Access the computed geodesic distance. More...
 
void distance_to_texture_coordinates ()
 Use the normalized distances as texture coordinates. More...
 

Detailed Description

The method works by a Dykstra-like breadth first traversal from the seed vertices, implemented by a heap structure. See [11] for details.

Constructor & Destructor Documentation

◆ SurfaceGeodesic()

SurfaceGeodesic ( SurfaceMesh mesh,
bool  use_virtual_edges = true 
)
Parameters
meshThe mesh on which to compute the geodesic distances.
use_virtual_edgesA flag to control the use of virtual edges. Default: true.
See also
compute() to actually compute the geodesic distances.

Member Function Documentation

◆ compute()

unsigned int compute ( const std::vector< Vertex > &  seed,
Scalar  maxdist = std::numeric_limits<Scalar>::max(),
unsigned int  maxnum = INT_MAX,
std::vector< Vertex > *  neighbors = nullptr 
)
Parameters
[in]seedThe vector of seed vertices.
[in]maxdistThe maximum distance up to which to compute the geodesic distances.
[in]maxnumThe maximum number of neighbors up to which to compute the geodesic distances.
[out]neighborsThe vector of neighbor vertices.
Returns
The number of neighbors that have been found.

◆ distance_to_texture_coordinates()

void distance_to_texture_coordinates ( )

Stores the normalized distances in a vertex property of type TexCoord named "v:tex". Re-uses any existing vertex property of the same type and name.

◆ operator()()

Scalar operator() ( Vertex  v) const
inline
Parameters
[in]vThe vertex for which to return the geodesic distance.
Returns
The geodesic distance of vertex v.
Precondition
The function compute() has been called before.
The vertex v needs to be a valid vertex handle of the mesh used during construction.