MeshLib C Docs
Loading...
Searching...
No Matches
MRMeshTopology.h
Go to the documentation of this file.
1#pragma once
2
3#include <MRCMesh/MREnums.h>
4#include <MRCMesh/MRId.h>
5#include <MRCMisc/common.h>
6#include <MRCMisc/exports.h>
8
9#include <stdbool.h>
10#include <stddef.h>
11
12#ifdef __cplusplus
13extern "C" {
14#endif
15
16typedef struct MR_EdgeBitSet MR_EdgeBitSet; // Defined in `#include <MRCMesh/MRBitSet.h>`.
17typedef struct MR_FaceBitSet MR_FaceBitSet; // Defined in `#include <MRCMesh/MRBitSet.h>`.
18typedef struct MR_FaceMap MR_FaceMap; // Defined in `#include <MRCMesh/MRVector.h>`.
19typedef struct MR_GridSettings MR_GridSettings; // Defined in `#include <MRCMesh/MRGridSettings.h>`.
20typedef struct MR_PackMapping MR_PackMapping; // Defined in `#include <MRCMesh/MRBuffer.h>`.
21typedef struct MR_PartMapping MR_PartMapping; // Defined in `#include <MRCMesh/MRPartMapping.h>`.
22typedef struct MR_Triangulation MR_Triangulation; // Defined in `#include <MRCMesh/MRVector.h>`.
23typedef struct MR_UndirectedEdgeBitSet MR_UndirectedEdgeBitSet; // Defined in `#include <MRCMesh/MRBitSet.h>`.
24typedef struct MR_Vector_MR_EdgeId_MR_FaceId MR_Vector_MR_EdgeId_MR_FaceId; // Defined in `#include <MRCMesh/MRVector.h>`.
25typedef struct MR_Vector_MR_EdgeId_MR_VertId MR_Vector_MR_EdgeId_MR_VertId; // Defined in `#include <MRCMesh/MRVector.h>`.
26typedef struct MR_VertBitSet MR_VertBitSet; // Defined in `#include <MRCMesh/MRBitSet.h>`.
27typedef struct MR_VertMap MR_VertMap; // Defined in `#include <MRCMesh/MRVector.h>`.
28typedef struct MR_WholeEdgeMap MR_WholeEdgeMap; // Defined in `#include <MRCMesh/MRVector.h>`.
29typedef struct MR_expected_void_std_string MR_expected_void_std_string; // Defined in `#include <MRCMisc/expected_void_std_string.h>`.
30typedef struct MR_phmap_flat_hash_map_MR_FaceId_MR_FaceId MR_phmap_flat_hash_map_MR_FaceId_MR_FaceId; // Defined in `#include <MRCMisc/phmap_flat_hash_map_MR_FaceId_MR_FaceId.h>`.
31typedef struct MR_std_function_bool_from_float MR_std_function_bool_from_float; // Defined in `#include <MRCMisc/std_function_bool_from_float.h>`.
32typedef struct MR_std_function_void_from_MR_EdgeId_MR_EdgeId MR_std_function_void_from_MR_EdgeId_MR_EdgeId; // Defined in `#include <MRCMisc/std_function_void_from_MR_EdgeId_MR_EdgeId.h>`.
33typedef struct MR_std_istream MR_std_istream; // Defined in `#include <MRCMisc/iostream.h>`.
34typedef struct MR_std_ostream MR_std_ostream; // Defined in `#include <MRCMisc/iostream.h>`.
35typedef struct MR_std_vector_MR_EdgeId MR_std_vector_MR_EdgeId; // Defined in `#include <MRCMisc/std_vector_MR_EdgeId.h>`.
36typedef struct MR_std_vector_std_array_MR_VertId_3 MR_std_vector_std_array_MR_VertId_3; // Defined in `#include <MRCMisc/std_vector_std_array_MR_VertId_3.h>`.
37typedef struct MR_std_vector_std_vector_MR_EdgeId MR_std_vector_std_vector_MR_EdgeId; // Defined in `#include <MRCMisc/std_vector_std_vector_MR_EdgeId.h>`.
38
39
43
47typedef struct MR_MeshTopology MR_MeshTopology;
48
54
60
66
72
78
84
90
96
102
106
111
119
123
127
132
135
138
145
149
154
158
162
167
170
173
180
185
190
195
200
206
211
216
221
226
231
237
241MRC_API void MR_MeshTopology_edgeReserve(MR_MeshTopology *_this, size_t newCapacity);
242
247
252
257
265
277
282
287
292
297
302
307
313
319
324
329
334
339
344
349
354
359
364
373
378
382
387
393
400
409
414
418
427
436
441
447
452
457
462
467
472
477
482
486MRC_API void MR_MeshTopology_vertReserve(MR_MeshTopology *_this, size_t newCapacity);
487
492
497
503
509
515
521
526
531
536
541
546
551
556
561
566
572
584
589
594
598MRC_API void MR_MeshTopology_faceReserve(MR_MeshTopology *_this, size_t newCapacity);
599
604
609
615
621
627
634
641
648
654
661
667
673
683
691
698
704
711
717
725
731
737
743
751
759
764
770
778
784MRC_API int MR_MeshTopology_findNumHoles(const MR_MeshTopology *_this, MR_EdgeBitSet *holeRepresentativeEdges);
785
791
799
806
813
820
826
840
849
858
868MRC_API void MR_MeshTopology_addPart_3(MR_MeshTopology *_this, const MR_MeshTopology *from, const MR_PartMapping *map, const bool *rearrangeTriangles);
869
877MRC_API void MR_MeshTopology_addPart_5(MR_MeshTopology *_this, const MR_MeshTopology *from, MR_FaceMap *outFmap, MR_VertMap *outVmap, MR_WholeEdgeMap *outEmap, const bool *rearrangeTriangles);
878
888
905MRC_API void MR_MeshTopology_addPartByMask_7(MR_MeshTopology *_this, const MR_MeshTopology *from, const MR_FaceBitSet *fromFaces, const bool *flipOrientation, const MR_std_vector_std_vector_MR_EdgeId *thisContours, const MR_std_vector_std_vector_MR_EdgeId *fromContours, const MR_PartMapping *map, MR_VacantElements *vacant);
906
911
922MRC_API void MR_MeshTopology_pack_4(MR_MeshTopology *_this, MR_FaceMap *outFmap, MR_VertMap *outVmap, MR_WholeEdgeMap *outEmap, const bool *rearrangeTriangles);
923
930
938
944
953
959
965MRC_API void MR_MeshTopology_resizeBeforeParallelAdd(MR_MeshTopology *_this, size_t edgeSize, size_t vertSize, size_t faceSize);
966
975MRC_API void MR_MeshTopology_addPackedPart(MR_MeshTopology *_this, const MR_MeshTopology *from, MR_EdgeId toEdgeId, const MR_FaceMap *fmap, const MR_VertMap *vmap);
976
985
990
995
1002
1003// constructs triangular grid mesh topology in parallel
1009
1017
1018#ifdef __cplusplus
1019} // extern "C"
1020#endif
struct MR_std_vector_std_vector_MR_EdgeId MR_std_vector_std_vector_MR_EdgeId
Definition MR2DContoursTriangulation.h:19
struct MR_MeshTopology MR_MeshTopology
Definition MR2DContoursTriangulation.h:15
struct MR_std_function_bool_from_float MR_std_function_bool_from_float
Definition MR3mf.h:10
struct MR_UndirectedEdgeBitSet MR_UndirectedEdgeBitSet
Definition MRAABBTreeBase.h:24
struct MR_VertBitSet MR_VertBitSet
Definition MRAABBTree.h:22
struct MR_FaceBitSet MR_FaceBitSet
Definition MRAABBTree.h:17
struct MR_phmap_flat_hash_map_MR_FaceId_MR_FaceId MR_phmap_flat_hash_map_MR_FaceId_MR_FaceId
Definition MRBitSet.h:42
struct MR_EdgeBitSet MR_EdgeBitSet
Definition MRBitSet.h:85
struct MR_VertMap MR_VertMap
std::vector<T>-like container that requires specific indexing type,
Definition MRBitSet.h:40
struct MR_FaceMap MR_FaceMap
std::vector<T>-like container that requires specific indexing type,
Definition MRBitSet.h:26
struct MR_WholeEdgeMap MR_WholeEdgeMap
std::vector<T>-like container that requires specific indexing type,
Definition MRBooleanOperation.h:21
struct MR_PackMapping MR_PackMapping
Definition MRBuffer.h:426
struct MR_std_vector_MR_EdgeId MR_std_vector_MR_EdgeId
Definition MRContoursStitch.h:11
struct MR_expected_void_std_string MR_expected_void_std_string
Definition MRCtm.h:26
struct MR_std_ostream MR_std_ostream
A C++ output stream.
Definition MRCtm.h:31
struct MR_std_istream MR_std_istream
A C++ input stream.
Definition MRCtm.h:28
bool MR_Turn
what way a path can follow in case of several alternatives
Definition MREnums.h:131
struct MR_std_function_void_from_MR_EdgeId_MR_EdgeId MR_std_function_void_from_MR_EdgeId_MR_EdgeId
Definition MRFillHoleNicely.h:24
struct MR_GridSettings MR_GridSettings
Definition MRGridSettings.h:41
struct MR_Triangulation MR_Triangulation
std::vector<T>-like container that requires specific indexing type,
Definition MRIdentifyVertices.h:13
MRC_API bool MR_MeshTopology_isTriVert(const MR_MeshTopology *_this, MR_FaceId f, MR_VertId v)
MRC_API bool MR_MeshTopology_isBdEdge(const MR_MeshTopology *_this, MR_EdgeId e, const MR_FaceBitSet *region)
MRC_API void MR_MeshTopology_addPart_5(MR_MeshTopology *_this, const MR_MeshTopology *from, MR_FaceMap *outFmap, MR_VertMap *outVmap, MR_WholeEdgeMap *outEmap, const bool *rearrangeTriangles)
MRC_API bool MR_MeshTopology_hasEdge(const MR_MeshTopology *_this, MR_EdgeId e)
struct MR_std_vector_std_array_MR_VertId_3 MR_std_vector_std_array_MR_VertId_3
Definition MRMeshTopology.h:36
MRC_API void MR_VacantElements_DestroyArray(const MR_VacantElements *_this)
Destroys a heap-allocated array of MR_VacantElements. Does nothing if the pointer is null.
MRC_API MR_FaceId MR_MeshTopology_lastValidFace(const MR_MeshTopology *_this)
MRC_API MR_EdgeBitSet * MR_MeshTopology_findLeftBdEdges(const MR_MeshTopology *_this, const MR_FaceBitSet *region, const MR_EdgeBitSet *test)
MRC_API bool MR_MeshTopology_checkValidity(const MR_MeshTopology *_this, MR_PassBy cb_pass_by, MR_std_function_bool_from_float *cb, const bool *allVerts)
MRC_API void MR_MeshTopology_vertResize(MR_MeshTopology *_this, size_t newSize)
MRC_API void MR_MeshTopology_preferEdges(MR_MeshTopology *_this, const MR_UndirectedEdgeBitSet *stableEdges)
MRC_API int MR_MeshTopology_getFaceDegree(const MR_MeshTopology *_this, MR_FaceId f)
MRC_API bool MR_equal_MR_MeshTopology(const MR_MeshTopology *_this, const MR_MeshTopology *b)
MRC_API MR_VertId MR_MeshTopology_org(const MR_MeshTopology *_this, MR_EdgeId he)
MRC_API MR_FaceId MR_MeshTopology_right(const MR_MeshTopology *_this, MR_EdgeId he)
MRC_API MR_EdgeId MR_MeshTopology_sharedEdge(const MR_MeshTopology *_this, MR_FaceId l, MR_FaceId r)
MRC_API MR_VertId MR_MeshTopology_lastValidVert(const MR_MeshTopology *_this)
MRC_API void MR_MeshTopology_faceResizeWithReserve(MR_MeshTopology *_this, size_t newSize)
MRC_API MR_VacantElements * MR_VacantElements_ConstructFromAnother(MR_PassBy _other_pass_by, MR_VacantElements *_other)
MRC_API MR_std_vector_MR_EdgeId * MR_MeshTopology_getLeftRing(const MR_MeshTopology *_this, MR_EdgeId e)
MRC_API MR_VacantElements * MR_MeshTopology_deleteFaces(MR_MeshTopology *_this, const MR_FaceBitSet *fs, const MR_UndirectedEdgeBitSet *keepEdges)
MRC_API void MR_MeshTopology_shrinkToFit(MR_MeshTopology *_this)
MRC_API bool MR_MeshTopology_isInnerOrBdVertex(const MR_MeshTopology *_this, MR_VertId v, const MR_FaceBitSet *region)
MRC_API void MR_MeshTopology_packMinMem(MR_MeshTopology *_this, const MR_PackMapping *map)
MRC_API const MR_UndirectedEdgeBitSet * MR_VacantElements_Get_edges(const MR_VacantElements *_this)
MRC_API void MR_MeshTopology_vertResizeWithReserve(MR_MeshTopology *_this, size_t newSize)
MRC_API void MR_MeshTopology_getTriEdges(const MR_MeshTopology *_this, MR_FaceId f, MR_EdgeId *e0, MR_EdgeId *e1, MR_EdgeId *e2)
MRC_API bool MR_MeshTopology_isLeftBdEdge(const MR_MeshTopology *_this, MR_EdgeId e, const MR_FaceBitSet *region)
MRC_API bool MR_MeshTopology_isLeftBdFace(const MR_MeshTopology *_this, MR_EdgeId e, const MR_FaceBitSet *region)
MRC_API MR_FaceBitSet * MR_MeshTopology_findBdFaces(const MR_MeshTopology *_this, const MR_FaceBitSet *region)
MRC_API void MR_MeshTopology_flip_MR_VertBitSet(const MR_MeshTopology *_this, MR_VertBitSet *vs)
MRC_API void MR_MeshTopology_excludeLoneEdges(const MR_MeshTopology *_this, MR_UndirectedEdgeBitSet *edges)
MRC_API MR_FaceBitSet * MR_MeshTopology_getPathRightFaces(const MR_MeshTopology *_this, const MR_std_vector_MR_EdgeId *path)
MRC_API bool MR_MeshTopology_isOrgInnerAndHasDegree(const MR_MeshTopology *_this, MR_EdgeId a, int d)
MRC_API void MR_MeshTopology_deleteFace(MR_MeshTopology *_this, MR_FaceId f, const MR_UndirectedEdgeBitSet *keepEdges)
MRC_API bool MR_MeshTopology_computeValidsFromEdges(MR_MeshTopology *_this, MR_PassBy cb_pass_by, MR_std_function_bool_from_float *cb)
MRC_API MR_EdgeId MR_MeshTopology_nextLeftBd(const MR_MeshTopology *_this, MR_EdgeId e, const MR_FaceBitSet *region, const MR_Turn *turn)
MRC_API MR_MeshTopology * MR_MeshTopology_ConstructFromAnother(MR_PassBy _other_pass_by, MR_MeshTopology *_other)
MRC_API MR_EdgeId MR_MeshTopology_lastNotLoneEdge(const MR_MeshTopology *_this)
MRC_API bool MR_MeshTopology_isBdVertex(const MR_MeshTopology *_this, MR_VertId v, const MR_FaceBitSet *region)
MRC_API size_t MR_MeshTopology_edgeCapacity(const MR_MeshTopology *_this)
MRC_API MR_EdgeId MR_MeshTopology_bdEdgeSameLeft(const MR_MeshTopology *_this, MR_EdgeId e, const MR_FaceBitSet *region)
MRC_API void MR_MeshTopology_resizeBeforeParallelAdd(MR_MeshTopology *_this, size_t edgeSize, size_t vertSize, size_t faceSize)
MRC_API size_t MR_MeshTopology_vertSize(const MR_MeshTopology *_this)
MRC_API const MR_VertBitSet * MR_VacantElements_Get_verts(const MR_VacantElements *_this)
MRC_API const MR_FaceBitSet * MR_MeshTopology_getFaceIds(const MR_MeshTopology *_this, const MR_FaceBitSet *region)
MRC_API MR_EdgeId MR_MeshTopology_bdEdgeSameOrigin(const MR_MeshTopology *_this, MR_EdgeId e, const MR_FaceBitSet *region)
MRC_API MR_FaceId MR_MeshTopology_left(const MR_MeshTopology *_this, MR_EdgeId he)
MRC_API const MR_FaceBitSet * MR_VacantElements_Get_faces(const MR_VacantElements *_this)
MRC_API MR_std_vector_MR_EdgeId * MR_MeshTopology_findHoleRepresentiveEdges(const MR_MeshTopology *_this, const MR_FaceBitSet *region)
MRC_API MR_FaceBitSet * MR_MeshTopology_getPathLeftFaces(const MR_MeshTopology *_this, const MR_std_vector_MR_EdgeId *path)
MRC_API MR_VertBitSet * MR_MeshTopology_findBdVerts(const MR_MeshTopology *_this, const MR_FaceBitSet *region, const MR_VertBitSet *test)
MRC_API bool MR_MeshTopology_isLeftInRegion(const MR_MeshTopology *_this, MR_EdgeId e, const MR_FaceBitSet *region)
MRC_API void MR_MeshTopology_vertReserve(MR_MeshTopology *_this, size_t newCapacity)
MRC_API bool MR_MeshTopology_updatingValids(const MR_MeshTopology *_this)
MRC_API MR_UndirectedEdgeId MR_MeshTopology_lastNotLoneUndirectedEdge(const MR_MeshTopology *_this)
MRC_API bool MR_MeshTopology_isInnerEdge(const MR_MeshTopology *_this, MR_EdgeId e, const MR_FaceBitSet *region)
MRC_API const MR_VertBitSet * MR_MeshTopology_getVertIds(const MR_MeshTopology *_this, const MR_VertBitSet *region)
MRC_API void MR_VacantElements_Destroy(const MR_VacantElements *_this)
Destroys a heap-allocated instance of MR_VacantElements. Does nothing if the pointer is null.
MRC_API MR_EdgeId MR_MeshTopology_bdEdgeWithLeft(const MR_MeshTopology *_this, MR_FaceId f, const MR_FaceBitSet *region)
MRC_API MR_VacantElements * MR_VacantElements_DefaultConstructArray(size_t num_elems)
struct MR_Vector_MR_EdgeId_MR_VertId MR_Vector_MR_EdgeId_MR_VertId
std::vector<T>-like container that requires specific indexing type,
Definition MRMeshTopology.h:25
MRC_API MR_VertId MR_MeshTopology_addVertId(MR_MeshTopology *_this)
MRC_API MR_FaceId MR_MeshTopology_sharedFace(const MR_MeshTopology *_this, MR_EdgeId a, MR_EdgeId b)
MRC_API MR_FaceId MR_MeshTopology_addFaceId(MR_MeshTopology *_this)
MRC_API MR_EdgeId MR_MeshTopology_prev(const MR_MeshTopology *_this, MR_EdgeId he)
MRC_API MR_MeshTopology * MR_MeshTopology_DefaultConstructArray(size_t num_elems)
MRC_API MR_EdgeId MR_MeshTopology_bdEdgeWithOrigin(const MR_MeshTopology *_this, MR_VertId v, const MR_FaceBitSet *region)
MRC_API MR_Triangulation * MR_MeshTopology_getTriangulation(const MR_MeshTopology *_this)
MRC_API void MR_MeshTopology_stopUpdatingValids(MR_MeshTopology *_this)
MRC_API MR_VacantElements * MR_VacantElements_ConstructFrom(MR_PassBy edges_pass_by, MR_UndirectedEdgeBitSet *edges, MR_PassBy verts_pass_by, MR_VertBitSet *verts, MR_PassBy faces_pass_by, MR_FaceBitSet *faces)
MRC_API const MR_VertBitSet * MR_MeshTopology_getValidVerts(const MR_MeshTopology *_this)
MRC_API void MR_VacantElements_Set_faces(MR_VacantElements *_this, MR_PassBy value_pass_by, MR_FaceBitSet *value)
MRC_API bool MR_MeshTopology_isVertInnerAndHasDegree(const MR_MeshTopology *_this, MR_VertId v, int d)
MRC_API void MR_MeshTopology_flipEdge(MR_MeshTopology *_this, MR_EdgeId e)
MRC_API void MR_MeshTopology_addPackedPart(MR_MeshTopology *_this, const MR_MeshTopology *from, MR_EdgeId toEdgeId, const MR_FaceMap *fmap, const MR_VertMap *vmap)
MRC_API void MR_MeshTopology_DestroyArray(const MR_MeshTopology *_this)
Destroys a heap-allocated array of MR_MeshTopology. Does nothing if the pointer is null.
MRC_API MR_EdgeId MR_MeshTopology_collapseEdge(MR_MeshTopology *_this, MR_EdgeId e, const MR_std_function_void_from_MR_EdgeId_MR_EdgeId *onEdgeDel)
MRC_API void MR_MeshTopology_flip_MR_FaceBitSet(const MR_MeshTopology *_this, MR_FaceBitSet *fs)
MRC_API MR_EdgeId MR_MeshTopology_makeEdge(MR_MeshTopology *_this)
MRC_API void MR_MeshTopology_setOrg(MR_MeshTopology *_this, MR_EdgeId a, MR_VertId v)
MRC_API MR_expected_void_std_string * MR_MeshTopology_read(MR_MeshTopology *_this, MR_std_istream *s, MR_PassBy callback_pass_by, MR_std_function_bool_from_float *callback)
MRC_API MR_MeshTopology * MR_MeshTopology_AssignFromAnother(MR_MeshTopology *_this, MR_PassBy _other_pass_by, MR_MeshTopology *_other)
MRC_API MR_std_vector_std_array_MR_VertId_3 * MR_MeshTopology_getAllTriVerts(const MR_MeshTopology *_this)
MRC_API void MR_MeshTopology_setLeft(MR_MeshTopology *_this, MR_EdgeId a, MR_FaceId f)
MRC_API MR_UndirectedEdgeBitSet * MR_MeshTopology_findNotLoneUndirectedEdges(const MR_MeshTopology *_this)
MRC_API bool MR_MeshTopology_isInnerOrBdEdge(const MR_MeshTopology *_this, MR_EdgeId e, const MR_FaceBitSet *region)
MRC_API void MR_MeshTopology_splice(MR_MeshTopology *_this, MR_EdgeId a, MR_EdgeId b)
MRC_API bool MR_MeshTopology_buildGridMesh(MR_MeshTopology *_this, const MR_GridSettings *settings, MR_PassBy cb_pass_by, MR_std_function_bool_from_float *cb)
MRC_API int MR_MeshTopology_getOrgDegree(const MR_MeshTopology *_this, MR_EdgeId a)
MRC_API const MR_Vector_MR_EdgeId_MR_FaceId * MR_MeshTopology_edgePerFace(const MR_MeshTopology *_this)
MRC_API bool MR_MeshTopology_isBdFace(const MR_MeshTopology *_this, MR_FaceId f, const MR_FaceBitSet *region)
MRC_API const MR_VacantElements * MR_VacantElements_OffsetPtr(const MR_VacantElements *ptr, ptrdiff_t i)
MRC_API size_t MR_MeshTopology_undirectedEdgeSize(const MR_MeshTopology *_this)
MRC_API void MR_MeshTopology_addPart_3(MR_MeshTopology *_this, const MR_MeshTopology *from, const MR_PartMapping *map, const bool *rearrangeTriangles)
MRC_API MR_EdgeId MR_MeshTopology_next(const MR_MeshTopology *_this, MR_EdgeId he)
MRC_API MR_VertBitSet * MR_MeshTopology_getPathVertices(const MR_MeshTopology *_this, const MR_std_vector_MR_EdgeId *path)
MRC_API MR_EdgeId MR_MeshTopology_prevLeftBd(const MR_MeshTopology *_this, MR_EdgeId e, const MR_FaceBitSet *region, const MR_Turn *turn)
MRC_API int MR_MeshTopology_getVertDegree(const MR_MeshTopology *_this, MR_VertId v)
MRC_API bool MR_MeshTopology_fromSameOriginRing(const MR_MeshTopology *_this, MR_EdgeId a, MR_EdgeId b)
MRC_API void MR_MeshTopology_getLeftTriEdges(const MR_MeshTopology *_this, MR_EdgeId e0, MR_EdgeId *e1, MR_EdgeId *e2)
MRC_API MR_EdgeId MR_MeshTopology_splitEdge(MR_MeshTopology *_this, MR_EdgeId e, MR_FaceBitSet *region, MR_phmap_flat_hash_map_MR_FaceId_MR_FaceId *new2Old)
MRC_API const MR_FaceBitSet * MR_MeshTopology_getValidFaces(const MR_MeshTopology *_this)
MRC_API MR_VacantElements * MR_VacantElements_OffsetMutablePtr(MR_VacantElements *ptr, ptrdiff_t i)
MRC_API MR_EdgeId MR_MeshTopology_sharedVertInOrg_MR_FaceId(const MR_MeshTopology *_this, MR_FaceId l, MR_FaceId r)
MRC_API void MR_MeshTopology_addPartByMask_4(MR_MeshTopology *_this, const MR_MeshTopology *from, const MR_FaceBitSet *fromFaces, const MR_PartMapping *map, MR_VacantElements *vacant)
MRC_API void MR_MeshTopology_getLeftTriVerts_4(const MR_MeshTopology *_this, MR_EdgeId a, MR_VertId *v0, MR_VertId *v1, MR_VertId *v2)
MRC_API size_t MR_MeshTopology_edgeSize(const MR_MeshTopology *_this)
MRC_API void MR_MeshTopology_faceResize(MR_MeshTopology *_this, size_t newSize)
MRC_API int MR_MeshTopology_getLeftDegree(const MR_MeshTopology *_this, MR_EdgeId a)
MRC_API MR_VertId MR_MeshTopology_splitFace(MR_MeshTopology *_this, MR_FaceId f, MR_FaceBitSet *region, MR_phmap_flat_hash_map_MR_FaceId_MR_FaceId *new2Old)
MRC_API void MR_MeshTopology_getLeftTriVerts_2(const MR_MeshTopology *_this, MR_EdgeId a, MR_std_array_MR_VertId_3 *v)
MRC_API MR_EdgeId MR_MeshTopology_edgeWithOrg(const MR_MeshTopology *_this, MR_VertId a)
MRC_API bool MR_MeshTopology_isBdVertexInOrg(const MR_MeshTopology *_this, MR_EdgeId e, const MR_FaceBitSet *region)
MRC_API size_t MR_MeshTopology_undirectedEdgeCapacity(const MR_MeshTopology *_this)
MRC_API void MR_MeshTopology_rotateTriangles(MR_MeshTopology *_this)
MRC_API int MR_MeshTopology_numValidFaces(const MR_MeshTopology *_this)
MRC_API size_t MR_MeshTopology_faceCapacity(const MR_MeshTopology *_this)
MRC_API bool MR_MeshTopology_isLeftTri(const MR_MeshTopology *_this, MR_EdgeId a)
MRC_API void MR_MeshTopology_faceReserve(MR_MeshTopology *_this, size_t newCapacity)
MRC_API void MR_MeshTopology_getTriVerts_2(const MR_MeshTopology *_this, MR_FaceId f, MR_std_array_MR_VertId_3 *v)
MRC_API MR_VacantElements * MR_VacantElements_DefaultConstruct(void)
MRC_API MR_std_array_MR_VertId_3 MR_MeshTopology_getTriVerts_1(const MR_MeshTopology *_this, MR_FaceId f)
MRC_API MR_MeshTopology * MR_MeshTopology_DefaultConstruct(void)
MRC_API MR_VacantElements * MR_VacantElements_AssignFromAnother(MR_VacantElements *_this, MR_PassBy _other_pass_by, MR_VacantElements *_other)
MRC_API MR_MeshTopology * MR_MeshTopology_OffsetMutablePtr(MR_MeshTopology *ptr, ptrdiff_t i)
MRC_API void MR_VacantElements_Set_edges(MR_VacantElements *_this, MR_PassBy value_pass_by, MR_UndirectedEdgeBitSet *value)
MRC_API void MR_MeshTopology_edgeReserve(MR_MeshTopology *_this, size_t newCapacity)
MRC_API void MR_MeshTopology_write(const MR_MeshTopology *_this, MR_std_ostream *s)
MRC_API bool MR_MeshTopology_isClosed(const MR_MeshTopology *_this, const MR_FaceBitSet *region)
MRC_API size_t MR_MeshTopology_vertCapacity(const MR_MeshTopology *_this)
struct MR_Vector_MR_EdgeId_MR_FaceId MR_Vector_MR_EdgeId_MR_FaceId
std::vector<T>-like container that requires specific indexing type,
Definition MRMeshTopology.h:24
MRC_API MR_VertId MR_MeshTopology_dest(const MR_MeshTopology *_this, MR_EdgeId he)
MRC_API void MR_VacantElements_Set_verts(MR_VacantElements *_this, MR_PassBy value_pass_by, MR_VertBitSet *value)
MRC_API bool MR_MeshTopology_isLoneEdge(const MR_MeshTopology *_this, MR_EdgeId a)
MRC_API size_t MR_MeshTopology_heapBytes(const MR_MeshTopology *_this)
MRC_API size_t MR_MeshTopology_faceSize(const MR_MeshTopology *_this)
MRC_API MR_std_array_MR_VertId_3 MR_MeshTopology_getLeftTriVerts_1(const MR_MeshTopology *_this, MR_EdgeId a)
MRC_API MR_FaceBitSet * MR_VacantElements_GetMutable_faces(MR_VacantElements *_this)
MRC_API MR_VertBitSet * MR_VacantElements_GetMutable_verts(MR_VacantElements *_this)
MRC_API void MR_MeshTopology_getTriVerts_4(const MR_MeshTopology *_this, MR_FaceId f, MR_VertId *v0, MR_VertId *v1, MR_VertId *v2)
MRC_API MR_UndirectedEdgeBitSet * MR_VacantElements_GetMutable_edges(MR_VacantElements *_this)
MRC_API MR_EdgeId MR_MeshTopology_findEdge(const MR_MeshTopology *_this, MR_VertId o, MR_VertId d)
MRC_API MR_EdgeId MR_MeshTopology_sharedVertInOrg_MR_EdgeId(const MR_MeshTopology *_this, MR_EdgeId a, MR_EdgeId b)
MRC_API bool MR_MeshTopology_hasFace(const MR_MeshTopology *_this, MR_FaceId a)
MRC_API const MR_Vector_MR_EdgeId_MR_VertId * MR_MeshTopology_edgePerVertex(const MR_MeshTopology *_this)
MRC_API bool MR_MeshTopology_hasVert(const MR_MeshTopology *_this, MR_VertId a)
MRC_API MR_EdgeId MR_MeshTopology_edgeWithLeft(const MR_MeshTopology *_this, MR_FaceId a)
MRC_API bool MR_MeshTopology_isLeftQuad(const MR_MeshTopology *_this, MR_EdgeId a)
MRC_API size_t MR_MeshTopology_computeNotLoneUndirectedEdges(const MR_MeshTopology *_this)
MRC_API void MR_MeshTopology_Destroy(const MR_MeshTopology *_this)
Destroys a heap-allocated instance of MR_MeshTopology. Does nothing if the pointer is null.
MRC_API const MR_MeshTopology * MR_MeshTopology_OffsetPtr(const MR_MeshTopology *ptr, ptrdiff_t i)
MRC_API int MR_MeshTopology_numValidVerts(const MR_MeshTopology *_this)
MRC_API void MR_MeshTopology_pack_4(MR_MeshTopology *_this, MR_FaceMap *outFmap, MR_VertMap *outVmap, MR_WholeEdgeMap *outEmap, const bool *rearrangeTriangles)
MRC_API void MR_MeshTopology_flipOrientation(MR_MeshTopology *_this, const MR_UndirectedEdgeBitSet *fullComponents)
MRC_API void MR_MeshTopology_addPartByMask_7(MR_MeshTopology *_this, const MR_MeshTopology *from, const MR_FaceBitSet *fromFaces, const bool *flipOrientation, const MR_std_vector_std_vector_MR_EdgeId *thisContours, const MR_std_vector_std_vector_MR_EdgeId *fromContours, const MR_PartMapping *map, MR_VacantElements *vacant)
MRC_API int MR_MeshTopology_findNumHoles(const MR_MeshTopology *_this, MR_EdgeBitSet *holeRepresentativeEdges)
MRC_API MR_std_vector_std_vector_MR_EdgeId * MR_MeshTopology_getLeftRings(const MR_MeshTopology *_this, const MR_std_vector_MR_EdgeId *es)
MRC_API bool MR_MeshTopology_fromSameLeftRing(const MR_MeshTopology *_this, MR_EdgeId a, MR_EdgeId b)
MRC_API void MR_MeshTopology_pack_1(MR_MeshTopology *_this, const MR_PackMapping *map)
struct MR_PartMapping MR_PartMapping
Definition MRMesh.h:31
struct MR_VacantElements MR_VacantElements
Definition MRMesh.h:40
MR_PassBy
Definition common.h:13
#define MRC_API
Definition include/MRCMisc/exports.h:11
Definition MRId.h:146
Definition MRId.h:31
Definition MRId.h:21
Definition MRId.h:41
A fixed-size array of MR::VertId of size 3.
Definition std_array_MR_VertId_3.h:12