MeshLib
 
Loading...
Searching...
No Matches
MRSurfacePath.h File Reference
#include "MRExpected.h"
#include "MRMeshTriPoint.h"
#include <vector>
#include <string>

Go to the source code of this file.

Classes

struct  MR::ComputeSteepestDescentPathSettings
 

Namespaces

namespace  MR
 

Enumerations

enum class  MR::PathError { MR::PathError::StartEndNotConnected , MR::PathError::InternalError }
 
enum class  MR::GeodesicPathApprox : char { MR::GeodesicPathApprox::DijkstraBiDir , MR::GeodesicPathApprox::DijkstraAStar , MR::GeodesicPathApprox::FastMarching }
 the algorithm to compute approximately geodesic path More...
 
enum class  MR::ExtremeEdgeType { MR::ExtremeEdgeType::Ridge , MR::ExtremeEdgeType::Gorge }
 

Functions

std::string MR::toString (PathError error)
 
MRMESH_API Expected< SurfacePath, PathErrorMR::computeSurfacePath (const MeshPart &mp, const MeshTriPoint &start, const MeshTriPoint &end, int maxGeodesicIters=5, const VertBitSet *vertRegion=nullptr, VertScalars *outSurfaceDistances=nullptr)
 
MRMESH_API Expected< SurfacePath, PathErrorMR::computeGeodesicPath (const Mesh &mesh, const MeshTriPoint &start, const MeshTriPoint &end, GeodesicPathApprox atype, int maxGeodesicIters=100)
 the maximum number of iterations to reduce approximate path length and convert it in geodesic path
 
MRMESH_API Expected< SurfacePath, PathErrorMR::computeGeodesicPathApprox (const Mesh &mesh, const MeshTriPoint &start, const MeshTriPoint &end, GeodesicPathApprox atype)
 
MRMESH_API Expected< SurfacePath, PathErrorMR::computeFastMarchingPath (const MeshPart &mp, const MeshTriPoint &start, const MeshTriPoint &end, const VertBitSet *vertRegion=nullptr, VertScalars *outSurfaceDistances=nullptr)
 
MRMESH_API SurfacePath MR::computeSteepestDescentPath (const MeshPart &mp, const VertScalars &field, const MeshTriPoint &start, const ComputeSteepestDescentPathSettings &settings={})
 
MRMESH_API void MR::computeSteepestDescentPath (const MeshPart &mp, const VertScalars &field, const MeshTriPoint &start, SurfacePath *outPath, const ComputeSteepestDescentPathSettings &settings={})
 
MRMESH_API MeshEdgePoint MR::findSteepestDescentPoint (const MeshPart &mp, const VertScalars &field, VertId v)
 finds the point along minus maximal gradient on the boundary of first ring boundary around given vertex
 
MRMESH_API MeshEdgePoint MR::findSteepestDescentPoint (const MeshPart &mp, const VertScalars &field, const MeshEdgePoint &ep)
 finds the point along minus maximal gradient on the boundary of triangles around given point (the boundary of left and right edge triangles' union in case (ep) is inner edge point)
 
MRMESH_API MeshEdgePoint MR::findSteepestDescentPoint (const MeshPart &mp, const VertScalars &field, const MeshTriPoint &tp)
 finds the point along minus maximal gradient on the boundary of triangles around given point (the boundary of the triangle itself in case (tp) is inner triangle point)
 
MRMESH_API UndirectedEdgeBitSet MR::findExtremeEdges (const Mesh &mesh, const VertScalars &field, ExtremeEdgeType type)
 computes all edges in the mesh, where the field not-increases both in left and right triangles
 
MRMESH_API HashMap< VertId, VertIdMR::computeClosestSurfacePathTargets (const Mesh &mesh, const VertBitSet &starts, const VertBitSet &ends, const VertBitSet *vertRegion=nullptr, VertScalars *outSurfaceDistances=nullptr)
 
MRMESH_API SurfacePaths MR::getSurfacePathsViaVertices (const Mesh &mesh, const VertBitSet &vs)
 
MRMESH_API float MR::surfacePathLength (const Mesh &mesh, const SurfacePath &surfacePath)
 computes the length of surface path
 
MRMESH_API Contour3f MR::surfacePathToContour3f (const Mesh &mesh, const SurfacePath &line)
 converts lines on mesh in 3D contours by computing coordinate of each point
 
MRMESH_API Contours3f MR::surfacePathsToContours3f (const Mesh &mesh, const SurfacePaths &lines)