Easy3D 2.6.1
|
This class computes geodesic distance from a set of seed vertices. More...
#include <easy3d/algo/surface_mesh_geodesic.h>
Public Member Functions | |
SurfaceMeshGeodesic (SurfaceMesh *mesh, bool use_virtual_edges=true) | |
Construct from mesh. | |
unsigned int | compute (const std::vector< SurfaceMesh::Vertex > &seed, float max_dist=FLT_MAX, unsigned int max_num=INT_MAX, std::vector< SurfaceMesh::Vertex > *neighbors=nullptr) |
Compute geodesic distances from specified seed points. | |
float | operator() (SurfaceMesh::Vertex v) const |
Access the computed geodesic distance. | |
void | distance_to_texture_coordinates () |
Use the normalized distances as texture coordinates. | |
This class computes geodesic distance from a set of seed vertices.
The method works by a Dykstra-like breadth first traversal from the seed vertices, implemented by a heap structure. See the following paper for more details:
|
explicit |
unsigned int compute | ( | const std::vector< SurfaceMesh::Vertex > & | seed, |
float | max_dist = FLT_MAX, | ||
unsigned int | max_num = INT_MAX, | ||
std::vector< SurfaceMesh::Vertex > * | neighbors = nullptr ) |
Compute geodesic distances from specified seed points.
The results are store as SurfaceMesh::VertexProperty<float> with a name "v:geodesic:distance".
[in] | seed | The vector of seed vertices. |
[in] | max_dist | The maximum distance up to which to compute the geodesic distances. |
[in] | max_num | The maximum number of neighbors up to which to compute the geodesic distances. |
[out] | neighbors | The vector of neighbor vertices. |
void distance_to_texture_coordinates | ( | ) |
Use the normalized distances as 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.
|
inline |
Access the computed geodesic distance.
[in] | v | The vertex for which to return the geodesic distance. |
v
. v
needs to be a valid vertex handle of the mesh used during construction.