Lagrange
Loading...
Searching...
No Matches
GeodesicEngineMMP< Scalar, Index > Class Template Reference

Computes surface geodesics using the [MMP] algorithm. More...

#include <lagrange/geodesic/GeodesicEngineMMP.h>

Inheritance diagram for GeodesicEngineMMP< Scalar, Index >:
GeodesicEngine< Scalar, Index >

Classes

struct  Impl
 

Public Types

using Super = GeodesicEngine<Scalar, Index>
 Parent class type.
 
using Mesh = typename Super::Mesh
 The mesh type.
 
- Public Types inherited from GeodesicEngine< Scalar, Index >
using Mesh = SurfaceMesh<Scalar, Index>
 The mesh type.
 

Public Member Functions

 GeodesicEngineMMP (Mesh &mesh)
 Precompute any data required for repeated geodesic distance computation.
 
 GeodesicEngineMMP (GeodesicEngineMMP &&)
 
GeodesicEngineMMPoperator= (GeodesicEngineMMP &&)
 
 GeodesicEngineMMP (const GeodesicEngineMMP &)=delete
 
GeodesicEngineMMPoperator= (const GeodesicEngineMMP &)=delete
 
SingleSourceGeodesicResult single_source_geodesic (const SingleSourceGeodesicOptions &options) override
 Compute single source geodesic distances using the MMP algorithm.
 
GeodesicPathResult< Scalar, Index > point_to_point_geodesic_path (const PointToPointGeodesicPathOptions &options) override
 Compute the exact geodesic path between two points using the MMP algorithm.
 
- Public Member Functions inherited from GeodesicEngine< Scalar, Index >
 GeodesicEngine (Mesh &mesh)
 Base class constructor.
 
virtual ~GeodesicEngine ()=default
 Base class destructor.
 
virtual Scalar point_to_point_geodesic (const PointToPointGeodesicOptions &options)
 Computes the geodesic distance between two points on the mesh.
 

Protected Attributes

lagrange::value_ptr< Implm_impl
 

Additional Inherited Members

- Protected Member Functions inherited from GeodesicEngine< Scalar, Index >
const Meshmesh () const
 
Meshmesh ()
 

Detailed Description

template<typename Scalar, typename Index>
class lagrange::geodesic::GeodesicEngineMMP< Scalar, Index >

Computes surface geodesics using the [MMP] algorithm.

This is an exact method, which offers the best accuracy overall, but can be slow for large meshes.

Template Parameters
ScalarMesh scalar type.
IndexMesh index type.

[MMP]: Mitchell, Joseph SB, David M. Mount, and Christos H. Papadimitriou. "The discrete geodesic problem." SIAM Journal on Computing 16.4 (1987): 647-668.

Constructor & Destructor Documentation

◆ GeodesicEngineMMP()

template<typename Scalar, typename Index>
GeodesicEngineMMP ( Mesh & mesh)
explicit

Precompute any data required for repeated geodesic distance computation.

Parameters
meshReference to the input mesh.

Member Function Documentation

◆ single_source_geodesic()

template<typename Scalar, typename Index>
SingleSourceGeodesicResult single_source_geodesic ( const SingleSourceGeodesicOptions & options)
overridevirtual

Compute single source geodesic distances using the MMP algorithm.

This function only computes a distance, and does not compute polar angles. It is based on the following paper:

  • Mitchell, Joseph SB, David M. Mount, and Christos H. Papadimitriou. "The discrete geodesic problem." SIAM Journal on Computing 16.4 (1987): 647-668.
Parameters
optionsThe options for the computation.
Returns
The attribute ids of the geodesic distance (id for polar angle will be invalid).

Implements GeodesicEngine< Scalar, Index >.

◆ point_to_point_geodesic_path()

template<typename Scalar, typename Index>
GeodesicPathResult< Scalar, Index > point_to_point_geodesic_path ( const PointToPointGeodesicPathOptions & options)
overridevirtual

Compute the exact geodesic path between two points using the MMP algorithm.

This function computes the shortest path on the surface between two points.

Parameters
optionsThe options for the path computation.
Returns
A GeodesicPathResult containing the ordered path points and segment facet indices. Returns an empty result if no path exists.

Reimplemented from GeodesicEngine< Scalar, Index >.


The documentation for this class was generated from the following files: