MeshLib C Docs
Loading...
Searching...
No Matches
MRMeshDelone.h
Go to the documentation of this file.
1#pragma once
2
3#include <MRCMesh/MRId.h>
4#include <MRCMisc/common.h>
5#include <MRCMisc/exports.h>
6
7#include <stdbool.h>
8#include <stddef.h>
9
10#ifdef __cplusplus
11extern "C" {
12#endif
13
14typedef struct MR_EdgeLengthMesh MR_EdgeLengthMesh; // Defined in `#include <MRCMesh/MREdgeLengthMesh.h>`.
15typedef struct MR_FaceBitSet MR_FaceBitSet; // Defined in `#include <MRCMesh/MRBitSet.h>`.
16typedef struct MR_Mesh MR_Mesh; // Defined in `#include <MRCMesh/MRMesh.h>`.
17typedef struct MR_MeshTopology MR_MeshTopology; // Defined in `#include <MRCMesh/MRMeshTopology.h>`.
18typedef struct MR_UndirectedEdgeBitSet MR_UndirectedEdgeBitSet; // Defined in `#include <MRCMesh/MRBitSet.h>`.
19typedef struct MR_Vector3d MR_Vector3d; // Defined in `#include <MRCMesh/MRVector3.h>`.
20typedef struct MR_Vector3f MR_Vector3f; // Defined in `#include <MRCMesh/MRVector3.h>`.
21typedef struct MR_VertBitSet MR_VertBitSet; // Defined in `#include <MRCMesh/MRBitSet.h>`.
22typedef struct MR_VertCoords MR_VertCoords; // Defined in `#include <MRCMesh/MRVector.h>`.
23typedef struct MR_std_function_bool_from_float MR_std_function_bool_from_float; // Defined in `#include <MRCMisc/std_function_bool_from_float.h>`.
24typedef struct MR_std_vector_MR_UndirectedEdgeId MR_std_vector_MR_UndirectedEdgeId; // Defined in `#include <MRCMisc/std_vector_MR_UndirectedEdgeId.h>`.
25
26
33
37
47
51
58
65
72
79
86
93
100
107
114
120
126
132
138
144
150
154
159
168MRC_API MR_DeloneFlipsCache *MR_DeloneFlipsCache_ConstructFrom(MR_PassBy flipCandidates_pass_by, MR_UndirectedEdgeBitSet *flipCandidates, MR_PassBy nextFlipCandidates_pass_by, MR_UndirectedEdgeBitSet *nextFlipCandidates, MR_PassBy queuedEdges_pass_by, MR_UndirectedEdgeBitSet *queuedEdges, MR_PassBy roundEdges_pass_by, MR_std_vector_MR_UndirectedEdgeId *roundEdges, MR_PassBy nextRoundEdges_pass_by, MR_std_vector_MR_UndirectedEdgeId *nextRoundEdges);
169
173
177
182
185
188
195
202
208
215
222
228
235
243
250
258
265
272
279
286
293
300
307
314
321
329
337
345
349
354
362MRC_API MR_DeloneSettings *MR_DeloneSettings_ConstructFrom(float maxDeviationAfterFlip, float maxAngleChange, float criticalTriAspectRatio, const MR_FaceBitSet *region, const MR_UndirectedEdgeBitSet *notFlippable, const MR_VertBitSet *vertRegion, MR_DeloneFlipsCache *cache);
363
367
371
377
380
383
391
403MRC_API bool MR_checkDeloneQuadrangle_MR_Vector3d(const MR_Vector3d *a, const MR_Vector3d *b, const MR_Vector3d *c, const MR_Vector3d *d, const double *maxAngleChange);
404
412MRC_API bool MR_checkDeloneQuadrangle_MR_Vector3f(const MR_Vector3f *a, const MR_Vector3f *b, const MR_Vector3f *c, const MR_Vector3f *d, const float *maxAngleChange);
413
420MRC_API MR_FlipEdge MR_canFlipEdge(const MR_MeshTopology *topology, MR_EdgeId edge, const MR_FaceBitSet *region, const MR_UndirectedEdgeBitSet *notFlippable, const MR_VertBitSet *vertRegion);
421
430MRC_API bool MR_checkDeloneQuadrangleInMesh_4(const MR_Mesh *mesh, MR_EdgeId edge, const MR_DeloneSettings *settings, float *deviationSqAfterFlip);
431
438MRC_API bool MR_checkDeloneQuadrangleInMesh_5(const MR_MeshTopology *topology, const MR_VertCoords *points, MR_EdgeId edge, const MR_DeloneSettings *settings, float *deviationSqAfterFlip);
439
449
456
463
476MRC_API int MR_makeDeloneEdgeFlips_4_MR_Mesh(MR_Mesh *mesh, const MR_DeloneSettings *settings, const int *numIters, const MR_std_function_bool_from_float *progressCallback);
477
486MRC_API int MR_makeDeloneEdgeFlips_5(MR_MeshTopology *topology, const MR_VertCoords *points, const MR_DeloneSettings *settings, const int *numIters, const MR_std_function_bool_from_float *progressCallback);
487
495
502
510
517
524
531
538
545
552
559
566
573
577
582
590
594
598
604
607
610
618
633
634#ifdef __cplusplus
635} // extern "C"
636#endif
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_VertCoords MR_VertCoords
std::vector<T>-like container that requires specific indexing type,
Definition MRAABBTreePoints.h:21
struct MR_VertBitSet MR_VertBitSet
Definition MRAABBTree.h:22
struct MR_FaceBitSet MR_FaceBitSet
Definition MRAABBTree.h:17
struct MR_MeshTopology MR_MeshTopology
Definition MRCameraPointsTriangulation.h:14
struct MR_Mesh MR_Mesh
Definition MRCtm.h:16
struct MR_std_vector_MR_UndirectedEdgeId MR_std_vector_MR_UndirectedEdgeId
Definition MRDistanceMap.h:35
struct MR_EdgeLengthMesh MR_EdgeLengthMesh
Definition MREdgeLengthMesh.h:24
MRC_API MR_UndirectedEdgeBitSet * MR_DeloneFlipsCache_GetMutable_flipCandidates(MR_DeloneFlipsCache *_this)
MRC_API bool MR_checkDeloneQuadrangleInMesh_5(const MR_MeshTopology *topology, const MR_VertCoords *points, MR_EdgeId edge, const MR_DeloneSettings *settings, float *deviationSqAfterFlip)
MRC_API MR_DeloneFlipsCache * MR_DeloneFlipsCache_AssignFromAnother(MR_DeloneFlipsCache *_this, MR_PassBy _other_pass_by, MR_DeloneFlipsCache *_other)
MRC_API bool MR_checkDeloneQuadrangle_MR_Vector3d(const MR_Vector3d *a, const MR_Vector3d *b, const MR_Vector3d *c, const MR_Vector3d *d, const double *maxAngleChange)
MRC_API float * MR_DeloneSettings_GetMutable_criticalTriAspectRatio(MR_DeloneSettings *_this)
MRC_API const float * MR_IntrinsicDeloneSettings_Get_threshold(const MR_IntrinsicDeloneSettings *_this)
MRC_API MR_IntrinsicDeloneSettings * MR_IntrinsicDeloneSettings_AssignFromAnother(MR_IntrinsicDeloneSettings *_this, const MR_IntrinsicDeloneSettings *_other)
MRC_API MR_DeloneFlipsCache * MR_DeloneFlipsCache_DefaultConstructArray(size_t num_elems)
MRC_API MR_DeloneSettings * MR_DeloneSettings_DefaultConstructArray(size_t num_elems)
MRC_API const MR_VertBitSet *const * MR_DeloneSettings_Get_vertRegion(const MR_DeloneSettings *_this)
MRC_API const MR_std_vector_MR_UndirectedEdgeId * MR_DeloneFlipsCache_Get_roundEdges(const MR_DeloneFlipsCache *_this)
MRC_API void MR_DeloneFlipsCache_Set_nextFlipCandidates(MR_DeloneFlipsCache *_this, MR_PassBy value_pass_by, MR_UndirectedEdgeBitSet *value)
MRC_API void MR_IntrinsicDeloneSettings_Set_region(MR_IntrinsicDeloneSettings *_this, const MR_FaceBitSet *value)
MRC_API const MR_UndirectedEdgeBitSet *const * MR_DeloneSettings_Get_notFlippable(const MR_DeloneSettings *_this)
MRC_API MR_IntrinsicDeloneSettings * MR_IntrinsicDeloneSettings_OffsetMutablePtr(MR_IntrinsicDeloneSettings *ptr, ptrdiff_t i)
MRC_API MR_UndirectedEdgeBitSet * MR_DeloneFlipsCache_GetMutable_nextFlipCandidates(MR_DeloneFlipsCache *_this)
MRC_API void MR_DeloneSettings_Set_maxDeviationAfterFlip(MR_DeloneSettings *_this, float value)
MRC_API const MR_FaceBitSet ** MR_DeloneSettings_GetMutable_region(MR_DeloneSettings *_this)
MRC_API MR_DeloneFlipsCache ** MR_DeloneSettings_GetMutable_cache(MR_DeloneSettings *_this)
struct MR_IntrinsicDeloneSettings MR_IntrinsicDeloneSettings
Definition MRMeshDelone.h:50
MRC_API void MR_DeloneFlipsCache_Set_roundEdges(MR_DeloneFlipsCache *_this, MR_PassBy value_pass_by, MR_std_vector_MR_UndirectedEdgeId *value)
MRC_API const MR_UndirectedEdgeBitSet ** MR_IntrinsicDeloneSettings_GetMutable_notFlippable(MR_IntrinsicDeloneSettings *_this)
MRC_API MR_DeloneFlipsCache * MR_DeloneFlipsCache_ConstructFrom(MR_PassBy flipCandidates_pass_by, MR_UndirectedEdgeBitSet *flipCandidates, MR_PassBy nextFlipCandidates_pass_by, MR_UndirectedEdgeBitSet *nextFlipCandidates, MR_PassBy queuedEdges_pass_by, MR_UndirectedEdgeBitSet *queuedEdges, MR_PassBy roundEdges_pass_by, MR_std_vector_MR_UndirectedEdgeId *roundEdges, MR_PassBy nextRoundEdges_pass_by, MR_std_vector_MR_UndirectedEdgeId *nextRoundEdges)
MRC_API MR_FlipEdge MR_canFlipEdge(const MR_MeshTopology *topology, MR_EdgeId edge, const MR_FaceBitSet *region, const MR_UndirectedEdgeBitSet *notFlippable, const MR_VertBitSet *vertRegion)
MRC_API const MR_DeloneFlipsCache * MR_DeloneFlipsCache_OffsetPtr(const MR_DeloneFlipsCache *ptr, ptrdiff_t i)
MRC_API bool MR_bestQuadrangleDiagonal(const MR_Vector3f *a, const MR_Vector3f *b, const MR_Vector3f *c, const MR_Vector3f *d)
MRC_API void MR_makeDeloneOriginRing_3(MR_Mesh *mesh, MR_EdgeId e, const MR_DeloneSettings *settings)
MRC_API int MR_makeDeloneEdgeFlips_4_MR_Mesh(MR_Mesh *mesh, const MR_DeloneSettings *settings, const int *numIters, const MR_std_function_bool_from_float *progressCallback)
MRC_API const MR_UndirectedEdgeBitSet *const * MR_IntrinsicDeloneSettings_Get_notFlippable(const MR_IntrinsicDeloneSettings *_this)
MRC_API const MR_UndirectedEdgeBitSet * MR_DeloneFlipsCache_Get_queuedEdges(const MR_DeloneFlipsCache *_this)
MRC_API const MR_UndirectedEdgeBitSet ** MR_DeloneSettings_GetMutable_notFlippable(MR_DeloneSettings *_this)
MRC_API void MR_DeloneFlipsCache_Set_nextRoundEdges(MR_DeloneFlipsCache *_this, MR_PassBy value_pass_by, MR_std_vector_MR_UndirectedEdgeId *value)
MRC_API const MR_DeloneSettings * MR_DeloneSettings_OffsetPtr(const MR_DeloneSettings *ptr, ptrdiff_t i)
MRC_API void MR_IntrinsicDeloneSettings_Destroy(const MR_IntrinsicDeloneSettings *_this)
Destroys a heap-allocated instance of MR_IntrinsicDeloneSettings. Does nothing if the pointer is null...
MRC_API MR_IntrinsicDeloneSettings * MR_IntrinsicDeloneSettings_DefaultConstructArray(size_t num_elems)
MRC_API int MR_makeDeloneEdgeFlips_5(MR_MeshTopology *topology, const MR_VertCoords *points, const MR_DeloneSettings *settings, const int *numIters, const MR_std_function_bool_from_float *progressCallback)
MRC_API MR_DeloneFlipsCache * MR_DeloneFlipsCache_ConstructFromAnother(MR_PassBy _other_pass_by, MR_DeloneFlipsCache *_other)
MRC_API void MR_DeloneFlipsCache_Set_queuedEdges(MR_DeloneFlipsCache *_this, MR_PassBy value_pass_by, MR_UndirectedEdgeBitSet *value)
MRC_API MR_DeloneSettings * MR_DeloneSettings_OffsetMutablePtr(MR_DeloneSettings *ptr, ptrdiff_t i)
MRC_API MR_UndirectedEdgeBitSet * MR_DeloneFlipsCache_GetMutable_queuedEdges(MR_DeloneFlipsCache *_this)
MRC_API const MR_FaceBitSet *const * MR_DeloneSettings_Get_region(const MR_DeloneSettings *_this)
MRC_API void MR_DeloneSettings_Set_cache(MR_DeloneSettings *_this, MR_DeloneFlipsCache *value)
struct MR_DeloneFlipsCache MR_DeloneFlipsCache
Definition MRMeshDelone.h:32
MRC_API const float * MR_DeloneSettings_Get_criticalTriAspectRatio(const MR_DeloneSettings *_this)
MRC_API void MR_DeloneSettings_DestroyArray(const MR_DeloneSettings *_this)
Destroys a heap-allocated array of MR_DeloneSettings. Does nothing if the pointer is null.
MRC_API MR_IntrinsicDeloneSettings * MR_IntrinsicDeloneSettings_DefaultConstruct(void)
MRC_API void MR_makeDeloneOriginRing_4(MR_MeshTopology *topology, const MR_VertCoords *points, MR_EdgeId e, const MR_DeloneSettings *settings)
MRC_API MR_DeloneSettings * MR_DeloneSettings_ConstructFrom(float maxDeviationAfterFlip, float maxAngleChange, float criticalTriAspectRatio, const MR_FaceBitSet *region, const MR_UndirectedEdgeBitSet *notFlippable, const MR_VertBitSet *vertRegion, MR_DeloneFlipsCache *cache)
MRC_API void MR_IntrinsicDeloneSettings_Set_notFlippable(MR_IntrinsicDeloneSettings *_this, const MR_UndirectedEdgeBitSet *value)
MR_FlipEdge
Definition MRMeshDelone.h:39
@ MR_FlipEdge_Can
edge flipping is possible
Definition MRMeshDelone.h:41
@ MR_FlipEdge_Cannot
edge flipping is required to solve some topology issue
Definition MRMeshDelone.h:43
@ MR_FlipEdge_Must
Definition MRMeshDelone.h:45
MRC_API const MR_std_vector_MR_UndirectedEdgeId * MR_DeloneFlipsCache_Get_nextRoundEdges(const MR_DeloneFlipsCache *_this)
MRC_API void MR_DeloneSettings_Set_notFlippable(MR_DeloneSettings *_this, const MR_UndirectedEdgeBitSet *value)
MRC_API MR_DeloneFlipsCache * MR_DeloneFlipsCache_OffsetMutablePtr(MR_DeloneFlipsCache *ptr, ptrdiff_t i)
MRC_API float * MR_DeloneSettings_GetMutable_maxAngleChange(MR_DeloneSettings *_this)
MRC_API void MR_IntrinsicDeloneSettings_DestroyArray(const MR_IntrinsicDeloneSettings *_this)
Destroys a heap-allocated array of MR_IntrinsicDeloneSettings. Does nothing if the pointer is null.
MRC_API void MR_DeloneSettings_Destroy(const MR_DeloneSettings *_this)
Destroys a heap-allocated instance of MR_DeloneSettings. Does nothing if the pointer is null.
MRC_API void MR_DeloneSettings_Set_criticalTriAspectRatio(MR_DeloneSettings *_this, float value)
MRC_API const float * MR_DeloneSettings_Get_maxDeviationAfterFlip(const MR_DeloneSettings *_this)
MRC_API MR_DeloneSettings * MR_DeloneSettings_AssignFromAnother(MR_DeloneSettings *_this, const MR_DeloneSettings *_other)
MRC_API MR_std_vector_MR_UndirectedEdgeId * MR_DeloneFlipsCache_GetMutable_nextRoundEdges(MR_DeloneFlipsCache *_this)
MRC_API const MR_UndirectedEdgeBitSet * MR_DeloneFlipsCache_Get_nextFlipCandidates(const MR_DeloneFlipsCache *_this)
MRC_API const MR_VertBitSet ** MR_DeloneSettings_GetMutable_vertRegion(MR_DeloneSettings *_this)
MRC_API MR_DeloneFlipsCache *const * MR_DeloneSettings_Get_cache(const MR_DeloneSettings *_this)
MRC_API void MR_DeloneSettings_Set_maxAngleChange(MR_DeloneSettings *_this, float value)
MRC_API MR_IntrinsicDeloneSettings * MR_IntrinsicDeloneSettings_ConstructFrom(float threshold, const MR_FaceBitSet *region, const MR_UndirectedEdgeBitSet *notFlippable, const MR_VertBitSet *vertRegion)
MRC_API MR_DeloneSettings * MR_DeloneSettings_ConstructFromAnother(const MR_DeloneSettings *_other)
MRC_API float * MR_DeloneSettings_GetMutable_maxDeviationAfterFlip(MR_DeloneSettings *_this)
MRC_API const MR_IntrinsicDeloneSettings * MR_IntrinsicDeloneSettings_OffsetPtr(const MR_IntrinsicDeloneSettings *ptr, ptrdiff_t i)
MRC_API const MR_FaceBitSet ** MR_IntrinsicDeloneSettings_GetMutable_region(MR_IntrinsicDeloneSettings *_this)
MRC_API int MR_makeDeloneEdgeFlips_4_MR_EdgeLengthMesh(MR_EdgeLengthMesh *mesh, const MR_IntrinsicDeloneSettings *settings, const int *numIters, const MR_std_function_bool_from_float *progressCallback)
MRC_API float * MR_IntrinsicDeloneSettings_GetMutable_threshold(MR_IntrinsicDeloneSettings *_this)
MRC_API void MR_DeloneFlipsCache_DestroyArray(const MR_DeloneFlipsCache *_this)
Destroys a heap-allocated array of MR_DeloneFlipsCache. Does nothing if the pointer is null.
MRC_API void MR_IntrinsicDeloneSettings_Set_threshold(MR_IntrinsicDeloneSettings *_this, float value)
MRC_API MR_IntrinsicDeloneSettings * MR_IntrinsicDeloneSettings_ConstructFromAnother(const MR_IntrinsicDeloneSettings *_other)
MRC_API void MR_DeloneSettings_Set_region(MR_DeloneSettings *_this, const MR_FaceBitSet *value)
MRC_API const float * MR_DeloneSettings_Get_maxAngleChange(const MR_DeloneSettings *_this)
MRC_API const MR_UndirectedEdgeBitSet * MR_DeloneFlipsCache_Get_flipCandidates(const MR_DeloneFlipsCache *_this)
MRC_API MR_std_vector_MR_UndirectedEdgeId * MR_DeloneFlipsCache_GetMutable_roundEdges(MR_DeloneFlipsCache *_this)
MRC_API bool MR_checkDeloneQuadrangle_MR_Vector3f(const MR_Vector3f *a, const MR_Vector3f *b, const MR_Vector3f *c, const MR_Vector3f *d, const float *maxAngleChange)
MRC_API void MR_DeloneSettings_Set_vertRegion(MR_DeloneSettings *_this, const MR_VertBitSet *value)
MRC_API MR_DeloneFlipsCache * MR_DeloneFlipsCache_DefaultConstruct(void)
MRC_API bool MR_checkDeloneQuadrangleInMesh_4(const MR_Mesh *mesh, MR_EdgeId edge, const MR_DeloneSettings *settings, float *deviationSqAfterFlip)
MRC_API void MR_DeloneFlipsCache_Destroy(const MR_DeloneFlipsCache *_this)
Destroys a heap-allocated instance of MR_DeloneFlipsCache. Does nothing if the pointer is null.
MRC_API const MR_VertBitSet ** MR_IntrinsicDeloneSettings_GetMutable_vertRegion(MR_IntrinsicDeloneSettings *_this)
MRC_API void MR_IntrinsicDeloneSettings_Set_vertRegion(MR_IntrinsicDeloneSettings *_this, const MR_VertBitSet *value)
struct MR_DeloneSettings MR_DeloneSettings
Definition MRMeshDelone.h:36
MRC_API MR_DeloneSettings * MR_DeloneSettings_DefaultConstruct(void)
MRC_API const MR_VertBitSet *const * MR_IntrinsicDeloneSettings_Get_vertRegion(const MR_IntrinsicDeloneSettings *_this)
MRC_API void MR_DeloneFlipsCache_Set_flipCandidates(MR_DeloneFlipsCache *_this, MR_PassBy value_pass_by, MR_UndirectedEdgeBitSet *value)
MRC_API const MR_FaceBitSet *const * MR_IntrinsicDeloneSettings_Get_region(const MR_IntrinsicDeloneSettings *_this)
MR_PassBy
Definition common.h:13
#define MRC_API
Definition include/MRCMisc/exports.h:11
Definition MRId.h:146
Generated from class MR::Vector3d.
Definition MRVector3.h:55
Generated from class MR::Vector3f.
Definition MRVector3.h:47