MeshLib C++ Docs
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
36MRMESH_API std::vector<EdgeLoop> delRegionKeepBd( Mesh& mesh, const FaceBitSet* region = nullptr, bool keepLoneHoles = false );
37inline std::vector<EdgeLoop> delRegionKeepBd( Mesh & mesh, const FaceBitSet & region, bool keepLoneHoles = false )
38 { return delRegionKeepBd( mesh, &region, keepLoneHoles ); }
39
42[[nodiscard]] MRMESH_API std::vector<EdgePath> findLeftBoundaryInsideMesh( const MeshTopology & topology, const FaceBitSet & region );
43
45[[nodiscard]] MRMESH_API UndirectedEdgeBitSet findRegionBoundaryUndirectedEdgesInsideMesh( const MeshTopology & topology, const FaceBitSet & region );
46
48[[nodiscard]] MRMESH_API FaceBitSet findRegionOuterFaces( const MeshTopology& topology, const FaceBitSet& region );
49
51[[nodiscard]] MRMESH_API VertBitSet getIncidentVerts( const MeshTopology & topology, const FaceBitSet & faces );
52
55[[nodiscard]] MRMESH_API const VertBitSet & getIncidentVerts( const MeshTopology & topology, const FaceBitSet * faces, VertBitSet & store );
56
58[[nodiscard]] MRMESH_API VertBitSet getInnerVerts( const MeshTopology & topology, const FaceBitSet * region = nullptr );
59
61[[nodiscard]] MRMESH_API VertBitSet getInnerVerts( const MeshTopology & topology, const FaceBitSet & region );
62
64[[nodiscard]] MRMESH_API VertBitSet getBoundaryVerts( const MeshTopology & topology, const FaceBitSet * region = nullptr );
65
68[[nodiscard]] MRMESH_API VertBitSet getRegionBoundaryVerts( const MeshTopology & topology, const FaceBitSet & region );
69
71[[nodiscard]] MRMESH_API FaceBitSet getIncidentFaces( const MeshTopology & topology, const VertBitSet & verts );
72
74[[nodiscard]] MRMESH_API FaceBitSet getInnerFaces( const MeshTopology & topology, const VertBitSet & verts );
75
77[[nodiscard]] MRMESH_API EdgeBitSet getRegionEdges( const MeshTopology& topology, const FaceBitSet& faces );
78
80[[nodiscard]] MRMESH_API UndirectedEdgeBitSet getIncidentEdges( const MeshTopology& topology, const FaceBitSet& faces );
81
83[[nodiscard]] MRMESH_API UndirectedEdgeBitSet getIncidentEdges( const MeshTopology& topology, const UndirectedEdgeBitSet& edges );
84
86[[nodiscard]] MRMESH_API VertBitSet getIncidentVerts( const MeshTopology & topology, const UndirectedEdgeBitSet & edges );
87
89[[nodiscard]] MRMESH_API FaceBitSet getIncidentFaces( const MeshTopology & topology, const UndirectedEdgeBitSet & edges );
90
92[[nodiscard]] MRMESH_API FaceBitSet getNeighborFaces( const MeshTopology& topology, const UndirectedEdgeBitSet& edges );
93
95[[nodiscard]] MRMESH_API UndirectedEdgeBitSet getInnerEdges( const MeshTopology & topology, const VertBitSet& verts );
96
98[[nodiscard]] MRMESH_API UndirectedEdgeBitSet getInnerEdges( const MeshTopology & topology, const FaceBitSet& region );
99
102[[nodiscard]] MRMESH_API const VertBitSet & getIncidentVerts( const MeshTopology & topology, const UndirectedEdgeBitSet * edges, VertBitSet & store );
103
105[[nodiscard]] MRMESH_API VertBitSet getInnerVerts( const MeshTopology & topology, const UndirectedEdgeBitSet & edges );
106
107} //namespace MR
#define MRMESH_API
Definition MRMesh/MRMeshFwd.h:79
Definition MRMesh/MRMeshTopology.h:18
Definition MRCameraOrientationPlugin.h:8
MRMESH_API VertBitSet getRegionBoundaryVerts(const MeshTopology &topology, const FaceBitSet &region)
std::vector< EdgeId > EdgeLoop
Definition MRMesh/MRMeshFwd.h:136
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< EdgeLoop > delRegionKeepBd(Mesh &mesh, const FaceBitSet *region=nullptr, bool keepLoneHoles=false)
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:22