MeshLib Documentation
Loading...
Searching...
No Matches
MRCloseVertices.h
Go to the documentation of this file.
1#pragma once
2
3#include "MRMeshFwd.h"
5#include <optional>
6
7namespace MR
8{
9
12[[nodiscard]] MRMESH_API std::optional<VertMap> findSmallestCloseVertices( const Mesh & mesh, float closeDist, const ProgressCallback & cb = {} );
13
16[[nodiscard]] MRMESH_API std::optional<VertMap> findSmallestCloseVertices( const PointCloud & cloud, float closeDist, const ProgressCallback & cb = {} );
17
20[[nodiscard]] MRMESH_API std::optional<VertMap> findSmallestCloseVertices( const VertCoords & points, float closeDist, const VertBitSet * valid = nullptr, const ProgressCallback & cb = {} );
21
24[[nodiscard]] MRMESH_API std::optional<VertMap> findSmallestCloseVerticesUsingTree( const VertCoords & points, float closeDist, const AABBTreePoints & tree, const VertBitSet * valid, const ProgressCallback & cb = {} );
25
27[[nodiscard]] MRMESH_API std::optional<VertBitSet> findCloseVertices( const Mesh & mesh, float closeDist, const ProgressCallback & cb = {} );
28
30[[nodiscard]] MRMESH_API std::optional<VertBitSet> findCloseVertices( const PointCloud & cloud, float closeDist, const ProgressCallback & cb = {} );
31
33[[nodiscard]] MRMESH_API std::optional<VertBitSet> findCloseVertices( const VertCoords & points, float closeDist, const VertBitSet * valid = nullptr, const ProgressCallback & cb = {} );
34
36[[nodiscard]] MRMESH_API VertBitSet findCloseVertices( const VertMap & smallestMap );
37
38// definition: if A,B and C,D are close vertices, then let us name AC and BD twin edges
39
41[[nodiscard]] MRMESH_API std::vector<EdgePair> findTwinEdgePairs( const Mesh & mesh, float closeDist );
42
44[[nodiscard]] MRMESH_API EdgeBitSet findTwinEdges( const Mesh & mesh, float closeDist );
45[[nodiscard]] MRMESH_API EdgeBitSet findTwinEdges( const std::vector<EdgePair> & pairs );
46
48[[nodiscard]] MRMESH_API UndirectedEdgeBitSet findTwinUndirectedEdges( const Mesh & mesh, float closeDist );
49[[nodiscard]] MRMESH_API UndirectedEdgeBitSet findTwinUndirectedEdges( const std::vector<EdgePair> & pairs );
50
52[[nodiscard]] MRMESH_API UndirectedEdgeHashMap findTwinUndirectedEdgeHashMap( const Mesh & mesh, float closeDist );
53[[nodiscard]] MRMESH_API UndirectedEdgeHashMap findTwinUndirectedEdgeHashMap( const std::vector<EdgePair> & pairs );
54
55} //namespace MR
#define MRMESH_API
Definition MRMesh/MRMeshFwd.h:46
bounding volume hierarchy for point cloud structure
Definition MRAABBTreePoints.h:16
std::function< bool(float)> ProgressCallback
Definition MRMesh/MRMeshFwd.h:576
Definition MRCameraOrientationPlugin.h:8
MRMESH_API std::optional< VertMap > findSmallestCloseVertices(const Mesh &mesh, float closeDist, const ProgressCallback &cb={})
MRMESH_API EdgeBitSet findTwinEdges(const Mesh &mesh, float closeDist)
finds all directed twin edges
MRMESH_API UndirectedEdgeHashMap findTwinUndirectedEdgeHashMap(const Mesh &mesh, float closeDist)
provided that each edge has at most one twin, composes bidirectional mapping between twins
MRMESH_API std::vector< EdgePair > findTwinEdgePairs(const Mesh &mesh, float closeDist)
finds pairs of twin edges (each twin edge will be present at least in one of pairs)
MRMESH_API UndirectedEdgeBitSet findTwinUndirectedEdges(const Mesh &mesh, float closeDist)
finds all undirected twin edges
MRMESH_API std::optional< VertBitSet > findCloseVertices(const Mesh &mesh, float closeDist, const ProgressCallback &cb={})
finds all close vertices, where for each vertex there is another one located within given distance
MRMESH_API std::optional< VertMap > findSmallestCloseVerticesUsingTree(const VertCoords &points, float closeDist, const AABBTreePoints &tree, const VertBitSet *valid, const ProgressCallback &cb={})
HashMap< UndirectedEdgeId, UndirectedEdgeId > UndirectedEdgeHashMap
Definition MRMesh/MRMeshFwd.h:467
Definition MRMesh/MRMesh.h:23
Definition MRMesh/MRPointCloud.h:16