MeshLib C++ Docs
Loading...
Searching...
No Matches
MRRegionBoundary.h
Go to the documentation of this file.
1#pragma once
2
3#include "MRPch/MRBindingMacros.h"
4#include "MRMeshFwd.h"
5#include "MRId.h"
6
7namespace MR
8{
9
12[[nodiscard]] MRMESH_API EdgeLoop trackLeftBoundaryLoop( const MeshTopology & topology, EdgeId e0, const FaceBitSet * region = nullptr );
13[[nodiscard]] inline EdgeLoop trackLeftBoundaryLoop( const MeshTopology & topology, const FaceBitSet & region, EdgeId e0 )
14 { return trackLeftBoundaryLoop( topology, e0, &region ); }
15
18[[nodiscard]] MRMESH_API EdgeLoop trackRightBoundaryLoop( const MeshTopology & topology, EdgeId e0, const FaceBitSet * region = nullptr );
19[[nodiscard]] inline EdgeLoop trackRightBoundaryLoop( const MeshTopology & topology, const FaceBitSet & region, EdgeId e0 )
20 { return trackRightBoundaryLoop( topology, e0, &region ); }
21
24[[nodiscard]] MRMESH_API std::vector<EdgeLoop> findLeftBoundary( const MeshTopology & topology, const FaceBitSet * region = nullptr );
26[[nodiscard]] MR_BIND_IGNORE inline std::vector<EdgeLoop> findLeftBoundary( const MeshTopology & topology, const FaceBitSet & region )
27 { return findLeftBoundary( topology, &region ); }
28
31[[nodiscard]] MRMESH_API std::vector<EdgeLoop> findRightBoundary( const MeshTopology & topology, const FaceBitSet * region = nullptr );
33[[nodiscard]] MR_BIND_IGNORE inline std::vector<EdgeLoop> findRightBoundary( const MeshTopology & topology, const FaceBitSet & region )
34 { return findRightBoundary( topology, &region ); }
35
39MRMESH_API std::vector<EdgeLoop> delRegionKeepBd( Mesh& mesh, const FaceBitSet* region = nullptr, bool keepLoneHoles = false );
41MR_BIND_IGNORE inline std::vector<EdgeLoop> delRegionKeepBd( Mesh & mesh, const FaceBitSet & region, bool keepLoneHoles = false )
42 { return delRegionKeepBd( mesh, &region, keepLoneHoles ); }
43
46[[nodiscard]] MRMESH_API std::vector<EdgePath> findLeftBoundaryInsideMesh( const MeshTopology & topology, const FaceBitSet & region );
47
49[[nodiscard]] MRMESH_API UndirectedEdgeBitSet findRegionBoundaryUndirectedEdgesInsideMesh( const MeshTopology & topology, const FaceBitSet & region );
50
52[[nodiscard]] MRMESH_API FaceBitSet findRegionOuterFaces( const MeshTopology& topology, const FaceBitSet& region );
53
55[[nodiscard]] MRMESH_API VertBitSet getIncidentVerts( const MeshTopology & topology, const FaceBitSet & faces );
56
59[[nodiscard]] MRMESH_API const VertBitSet & getIncidentVerts( const MeshTopology & topology, const FaceBitSet * faces, VertBitSet & store );
60
62[[nodiscard]] MRMESH_API VertBitSet getInnerVerts( const MeshTopology & topology, const FaceBitSet * region = nullptr );
63
66[[nodiscard]] MRMESH_API MR_BIND_IGNORE VertBitSet getInnerVerts( const MeshTopology & topology, const FaceBitSet & region );
67
69[[nodiscard]] MRMESH_API VertBitSet getBoundaryVerts( const MeshTopology & topology, const FaceBitSet * region = nullptr );
70
73[[nodiscard]] MRMESH_API VertBitSet getRegionBoundaryVerts( const MeshTopology & topology, const FaceBitSet & region );
74
76[[nodiscard]] MRMESH_API FaceBitSet getIncidentFaces( const MeshTopology & topology, const VertBitSet & verts );
77
79[[nodiscard]] MRMESH_API FaceBitSet getInnerFaces( const MeshTopology & topology, const VertBitSet & verts );
80
82[[nodiscard]] MRMESH_API EdgeBitSet getRegionEdges( const MeshTopology& topology, const FaceBitSet& faces );
83
85[[nodiscard]] MRMESH_API UndirectedEdgeBitSet getIncidentEdges( const MeshTopology& topology, const FaceBitSet& faces );
86
88[[nodiscard]] MRMESH_API UndirectedEdgeBitSet getIncidentEdges( const MeshTopology& topology, const UndirectedEdgeBitSet& edges );
89
91[[nodiscard]] MRMESH_API VertBitSet getIncidentVerts( const MeshTopology & topology, const UndirectedEdgeBitSet & edges );
92
94[[nodiscard]] MRMESH_API FaceBitSet getIncidentFaces( const MeshTopology & topology, const UndirectedEdgeBitSet & edges );
95
97[[nodiscard]] MRMESH_API FaceBitSet getNeighborFaces( const MeshTopology& topology, const UndirectedEdgeBitSet& edges );
98
100[[nodiscard]] MRMESH_API UndirectedEdgeBitSet getInnerEdges( const MeshTopology & topology, const VertBitSet& verts );
101
103[[nodiscard]] MRMESH_API UndirectedEdgeBitSet getInnerEdges( const MeshTopology & topology, const FaceBitSet& region );
104
107[[nodiscard]] MRMESH_API const VertBitSet & getIncidentVerts( const MeshTopology & topology, const UndirectedEdgeBitSet * edges, VertBitSet & store );
108
110[[nodiscard]] MRMESH_API VertBitSet getInnerVerts( const MeshTopology & topology, const UndirectedEdgeBitSet & edges );
111
112} //namespace MR
#define MRMESH_API
Definition MRMeshFwd.h:80
Definition MRMesh/MRMeshTopology.h:19
Definition MRCameraOrientationPlugin.h:8
MRMESH_API VertBitSet getRegionBoundaryVerts(const MeshTopology &topology, const FaceBitSet &region)
std::vector< EdgeId > EdgeLoop
Definition MRMeshFwd.h:145
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...
std::array< Vector3f, 3 > MR_BIND_IGNORE
Definition MRMeshBuilderTypes.h:10
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:23