MeshLib
 
Loading...
Searching...
No Matches
MRMesh/MRRegionBoundary.h
Go to the documentation of this file.
1#pragma once
2
3#include "MRMeshFwd.h"
4#include "MRId.h"
5
6namespace MR
7{
8
11[[nodiscard]] MRMESH_API EdgeLoop trackLeftBoundaryLoop( const MeshTopology & topology, EdgeId e0, const FaceBitSet * region = nullptr );
12[[nodiscard]] inline EdgeLoop trackLeftBoundaryLoop( const MeshTopology & topology, const FaceBitSet & region, EdgeId e0 )
13 { return trackLeftBoundaryLoop( topology, e0, &region ); }
14
17[[nodiscard]] MRMESH_API EdgeLoop trackRightBoundaryLoop( const MeshTopology & topology, EdgeId e0, const FaceBitSet * region = nullptr );
18[[nodiscard]] inline EdgeLoop trackRightBoundaryLoop( const MeshTopology & topology, const FaceBitSet & region, EdgeId e0 )
19 { return trackRightBoundaryLoop( topology, e0, &region ); }
20
23[[nodiscard]] MRMESH_API std::vector<EdgeLoop> findLeftBoundary( const MeshTopology & topology, const FaceBitSet * region = nullptr );
24[[nodiscard]] inline std::vector<EdgeLoop> findLeftBoundary( const MeshTopology & topology, const FaceBitSet & region )
25 { return findLeftBoundary( topology, &region ); }
26
29[[nodiscard]] MRMESH_API std::vector<EdgeLoop> findRightBoundary( const MeshTopology & topology, const FaceBitSet * region = nullptr );
30[[nodiscard]] inline std::vector<EdgeLoop> findRightBoundary( const MeshTopology & topology, const FaceBitSet & region )
31 { return findRightBoundary( topology, &region ); }
32
35MRMESH_API std::vector<EdgeLoop> delRegionKeepBd( Mesh & mesh, const FaceBitSet * region = nullptr );
36inline std::vector<EdgeLoop> delRegionKeepBd( Mesh & mesh, const FaceBitSet & region )
37 { return delRegionKeepBd( mesh, &region ); }
38
41[[nodiscard]] MRMESH_API std::vector<EdgePath> findLeftBoundaryInsideMesh( const MeshTopology & topology, const FaceBitSet & region );
42
44[[nodiscard]] MRMESH_API UndirectedEdgeBitSet findRegionBoundaryUndirectedEdgesInsideMesh( const MeshTopology & topology, const FaceBitSet & region );
45
47[[nodiscard]] MRMESH_API FaceBitSet findRegionOuterFaces( const MeshTopology& topology, const FaceBitSet& region );
48
50[[nodiscard]] MRMESH_API VertBitSet getIncidentVerts( const MeshTopology & topology, const FaceBitSet & faces );
51
54[[nodiscard]] MRMESH_API const VertBitSet & getIncidentVerts( const MeshTopology & topology, const FaceBitSet * faces, VertBitSet & store );
55
57[[nodiscard]] MRMESH_API VertBitSet getInnerVerts( const MeshTopology & topology, const FaceBitSet * region = nullptr );
58
60[[nodiscard]] MRMESH_API VertBitSet getInnerVerts( const MeshTopology & topology, const FaceBitSet & region );
61
63[[nodiscard]] MRMESH_API VertBitSet getBoundaryVerts( const MeshTopology & topology, const FaceBitSet * region = nullptr );
64
67[[nodiscard]] MRMESH_API VertBitSet getRegionBoundaryVerts( const MeshTopology & topology, const FaceBitSet & region );
68
70[[nodiscard]] MRMESH_API FaceBitSet getIncidentFaces( const MeshTopology & topology, const VertBitSet & verts );
71
73[[nodiscard]] MRMESH_API FaceBitSet getInnerFaces( const MeshTopology & topology, const VertBitSet & verts );
74
76[[nodiscard]] MRMESH_API EdgeBitSet getRegionEdges( const MeshTopology& topology, const FaceBitSet& faces );
77
79[[nodiscard]] MRMESH_API UndirectedEdgeBitSet getIncidentEdges( const MeshTopology& topology, const FaceBitSet& faces );
80
82[[nodiscard]] MRMESH_API UndirectedEdgeBitSet getIncidentEdges( const MeshTopology& topology, const UndirectedEdgeBitSet& edges );
83
85[[nodiscard]] MRMESH_API VertBitSet getIncidentVerts( const MeshTopology & topology, const UndirectedEdgeBitSet & edges );
86
88[[nodiscard]] MRMESH_API FaceBitSet getIncidentFaces( const MeshTopology & topology, const UndirectedEdgeBitSet & edges );
89
91[[nodiscard]] MRMESH_API FaceBitSet getNeighborFaces( const MeshTopology& topology, const UndirectedEdgeBitSet& edges );
92
94[[nodiscard]] MRMESH_API UndirectedEdgeBitSet getInnerEdges( const MeshTopology & topology, const VertBitSet& verts );
95
97[[nodiscard]] MRMESH_API UndirectedEdgeBitSet getInnerEdges( const MeshTopology & topology, const FaceBitSet& region );
98
101[[nodiscard]] MRMESH_API const VertBitSet & getIncidentVerts( const MeshTopology & topology, const UndirectedEdgeBitSet * edges, VertBitSet & store );
102
104[[nodiscard]] MRMESH_API VertBitSet getInnerVerts( const MeshTopology & topology, const UndirectedEdgeBitSet & edges );
105
106} //namespace MR
int EdgeId
Definition MRDotNet/MRMeshFwd.h:52
#define MRMESH_API
Definition MRMesh/MRMeshFwd.h:46
Definition MRDotNet/MRBitSet.h:39
Definition MRMesh/MRMeshTopology.h:18
Definition MRCameraOrientationPlugin.h:7
MRMESH_API VertBitSet getRegionBoundaryVerts(const MeshTopology &topology, const FaceBitSet &region)
MRMESH_API std::vector< EdgeLoop > delRegionKeepBd(Mesh &mesh, const FaceBitSet *region=nullptr)
std::vector< EdgeId > EdgeLoop
Definition MRMesh/MRMeshFwd.h:99
MRMESH_API EdgeLoop trackLeftBoundaryLoop(const MeshTopology &topology, EdgeId e0, const FaceBitSet *region=nullptr)
MRMESH_API EdgeLoop trackRightBoundaryLoop(const MeshTopology &topology, EdgeId e0, const FaceBitSet *region=nullptr)
MRMESH_API FaceBitSet findRegionOuterFaces(const MeshTopology &topology, const FaceBitSet &region)
MRMESH_API FaceBitSet getIncidentFaces(const MeshTopology &topology, const VertBitSet &verts)
composes the set of all faces incident to given vertices
MRMESH_API std::vector< EdgeLoop > findLeftBoundary(const MeshTopology &topology, const FaceBitSet *region=nullptr)
MRMESH_API std::vector< EdgeLoop > findRightBoundary(const MeshTopology &topology, const FaceBitSet *region=nullptr)
MRMESH_API VertBitSet getBoundaryVerts(const MeshTopology &topology, const FaceBitSet *region=nullptr)
composes the set of all boundary vertices for given region (or whole mesh if !region)
MRMESH_API VertBitSet getIncidentVerts(const MeshTopology &topology, const FaceBitSet &faces)
composes the set of all vertices incident to given faces
MRMESH_API FaceBitSet getInnerFaces(const MeshTopology &topology, const VertBitSet &verts)
composes the set of all faces with all their vertices in given set
MRMESH_API UndirectedEdgeBitSet getIncidentEdges(const MeshTopology &topology, const FaceBitSet &faces)
composes the set of all undirected edges, having a face from given set from one of two sides
MRMESH_API VertBitSet getInnerVerts(const MeshTopology &topology, const FaceBitSet *region=nullptr)
composes the set of all vertices not on the boundary of a hole and with all their adjacent faces in g...
MRMESH_API UndirectedEdgeBitSet findRegionBoundaryUndirectedEdgesInsideMesh(const MeshTopology &topology, const FaceBitSet &region)
returns all region boundary edges, where each edge has a region face on one side, and a valid not-reg...
MRMESH_API EdgeBitSet getRegionEdges(const MeshTopology &topology, const FaceBitSet &faces)
composes the set of all edges, having a face from given set at the left
MRMESH_API std::vector< EdgePath > findLeftBoundaryInsideMesh(const MeshTopology &topology, const FaceBitSet &region)
MRMESH_API FaceBitSet getNeighborFaces(const MeshTopology &topology, const UndirectedEdgeBitSet &edges)
composes the set of all left and right faces of given edges
MRMESH_API UndirectedEdgeBitSet getInnerEdges(const MeshTopology &topology, const VertBitSet &verts)
composes the set of all edges with all their vertices in given set
Definition MRMesh/MRMesh.h:23