MeshLib C Docs
Loading...
Searching...
No Matches
MRPointCloudTriangulationHelpers.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_FewSmallest_MR_PointsProjectionResult MR_FewSmallest_MR_PointsProjectionResult; // Defined in `#include <MRCMesh/MRFewSmallest.h>`.
15typedef struct MR_PointCloud MR_PointCloud; // Defined in `#include <MRCMesh/MRPointCloud.h>`.
16typedef struct MR_VertCoords MR_VertCoords; // Defined in `#include <MRCMesh/MRVector.h>`.
17typedef struct MR_std_function_bool_from_float MR_std_function_bool_from_float; // Defined in `#include <MRCMisc/std_function_bool_from_float.h>`.
18typedef struct MR_std_optional_MR_AllLocalTriangulations MR_std_optional_MR_AllLocalTriangulations; // Defined in `#include <MRCMisc/std_optional_MR_AllLocalTriangulations.h>`.
19typedef struct MR_std_optional_MR_VertBitSet MR_std_optional_MR_VertBitSet; // Defined in `#include <MRCMisc/std_optional_MR_VertBitSet.h>`.
20typedef struct MR_std_optional_std_vector_MR_SomeLocalTriangulations MR_std_optional_std_vector_MR_SomeLocalTriangulations; // Defined in `#include <MRCMisc/std_optional_std_vector_MR_SomeLocalTriangulations.h>`.
21typedef struct MR_std_vector_MR_VertId MR_std_vector_MR_VertId; // Defined in `#include <MRCMisc/std_vector_MR_VertId.h>`.
22typedef struct MR_std_vector_std_pair_double_int MR_std_vector_std_pair_double_int; // Defined in `#include <MRCMisc/std_vector_std_pair_double_int.h>`.
23
24
27
34
37
47
56
69MRC_API float MR_TriangulationHelpers_findNumNeighbors(const MR_PointCloud *pointCloud, MR_VertId v, int numNeis, MR_std_vector_MR_VertId *neighbors, MR_FewSmallest_MR_PointsProjectionResult *tmp, const float *upDistLimitSq);
70
79
80// profit of flipping this edge
85
86// profit of flipping this edge
90
91// profit of flipping this edge
96
97// index
102
103// index
107
108// index
113
114// id of prev neighbor
119
120// id of prev neighbor
124
125// id of prev neighbor
130
131// id of next neighbor
136
137// id of next neighbor
141
142// id of next neighbor
147
148// if this flag is true, edge cannot be flipped
153
154// if this flag is true, edge cannot be flipped
158
159// if this flag is true, edge cannot be flipped
164
168
173
177
180
183
188
191
194
200
205
210
215
222
228
235
241
246
252
259
265
272
278
283
289
293
298
301
304
308
311
314
319
326
332
339
346
352
359
365
370
376
382
387
393
399
404
410
416
421
427
433
438
444
450
455
461
467
472
478
484
489
495
499
504
507MRC_API MR_TriangulationHelpers_Settings *MR_TriangulationHelpers_Settings_ConstructFrom(float radius, int numNeis, float critAngle, float boundaryAngle, const MR_VertCoords *trustedNormals, bool automaticRadiusIncrease, int maxRemoves, MR_std_vector_MR_VertId *allNeighbors, float *actualRadius, const MR_PointCloud *searchNeighbors);
508
511
514
519
522
525
531
538
548
557
572
580
581#ifdef __cplusplus
582} // extern "C"
583#endif
struct MR_std_function_bool_from_float MR_std_function_bool_from_float
Definition MR3mf.h:10
struct MR_VertCoords MR_VertCoords
Definition MRAABBTreePoints.h:21
struct MR_std_optional_MR_VertBitSet MR_std_optional_MR_VertBitSet
Definition MRCloseVertices.h:19
struct MR_PointCloud MR_PointCloud
Definition MRCtm.h:14
struct MR_std_vector_MR_VertId MR_std_vector_MR_VertId
Definition MREdgePaths.h:29
struct MR_FewSmallest_MR_PointsProjectionResult MR_FewSmallest_MR_PointsProjectionResult
Definition MRFewSmallest.h:19
struct MR_std_optional_MR_AllLocalTriangulations MR_std_optional_MR_AllLocalTriangulations
Definition MRLocalTriangulations.h:25
MRC_API void MR_TriangulationHelpers_Settings_DestroyArray(const MR_TriangulationHelpers_Settings *_this)
Destroys a heap-allocated array of MR_TriangulationHelpers_Settings. Does nothing if the pointer is n...
MRC_API MR_TriangulationHelpers_TriangulatedFanData * MR_TriangulationHelpers_TriangulatedFanData_ConstructFromAnother(MR_PassBy _other_pass_by, MR_TriangulationHelpers_TriangulatedFanData *_other)
MRC_API const float * MR_TriangulationHelpers_FanOptimizerQueueElement_Get_weight(const MR_TriangulationHelpers_FanOptimizerQueueElement *_this)
MRC_API const MR_PointCloud ** MR_TriangulationHelpers_Settings_GetMutable_searchNeighbors(MR_TriangulationHelpers_Settings *_this)
MRC_API MR_TriangulationHelpers_FanOptimizerQueueElement * MR_TriangulationHelpers_FanOptimizerQueueElement_ConstructFromAnother(const MR_TriangulationHelpers_FanOptimizerQueueElement *_other)
struct MR_std_optional_std_vector_MR_SomeLocalTriangulations MR_std_optional_std_vector_MR_SomeLocalTriangulations
Definition MRPointCloudTriangulationHelpers.h:20
MRC_API void MR_TriangulationHelpers_buildLocalTriangulation(const MR_PointCloud *cloud, MR_VertId v, const MR_TriangulationHelpers_Settings *settings, MR_TriangulationHelpers_TriangulatedFanData *fanData)
MRC_API float * MR_TriangulationHelpers_Settings_GetMutable_boundaryAngle(MR_TriangulationHelpers_Settings *_this)
MRC_API float MR_TriangulationHelpers_updateNeighborsRadius(const MR_VertCoords *points, MR_VertId v, MR_VertId boundaryV, const MR_std_vector_MR_VertId *fan, float baseRadius)
Finds max radius of neighbors search, for possible better local triangulation.
MRC_API bool MR_TriangulationHelpers_isBoundaryPoint(const MR_PointCloud *cloud, MR_VertId v, const MR_TriangulationHelpers_Settings *settings, MR_TriangulationHelpers_TriangulatedFanData *fanData)
Checks if given vertex is on boundary of the point cloud, by constructing local triangulation around ...
MRC_API const bool * MR_TriangulationHelpers_Settings_Get_automaticRadiusIncrease(const MR_TriangulationHelpers_Settings *_this)
MRC_API const int * MR_TriangulationHelpers_Settings_Get_maxRemoves(const MR_TriangulationHelpers_Settings *_this)
MRC_API void MR_TriangulationHelpers_findNeighborsInBall(const MR_PointCloud *pointCloud, MR_VertId v, float radius, MR_std_vector_MR_VertId *neighbors)
Finds all neighbors of v in given radius (v excluded)
struct MR_std_vector_std_pair_double_int MR_std_vector_std_pair_double_int
Definition MRPointCloudTriangulationHelpers.h:22
MRC_API void MR_TriangulationHelpers_Settings_Set_boundaryAngle(MR_TriangulationHelpers_Settings *_this, float value)
MRC_API MR_TriangulationHelpers_Settings * MR_TriangulationHelpers_Settings_AssignFromAnother(MR_TriangulationHelpers_Settings *_this, const MR_TriangulationHelpers_Settings *_other)
MRC_API bool MR_equal_MR_TriangulationHelpers_FanOptimizerQueueElement(const MR_TriangulationHelpers_FanOptimizerQueueElement *_this, const MR_TriangulationHelpers_FanOptimizerQueueElement *other)
MRC_API void MR_TriangulationHelpers_Settings_Set_numNeis(MR_TriangulationHelpers_Settings *_this, int value)
MRC_API MR_TriangulationHelpers_FanOptimizerQueueElement * MR_TriangulationHelpers_FanOptimizerQueueElement_OffsetMutablePtr(MR_TriangulationHelpers_FanOptimizerQueueElement *ptr, ptrdiff_t i)
Offsets a pointer to an array element by i positions (not bytes). Use only if you're certain that the...
MRC_API const MR_VertCoords ** MR_TriangulationHelpers_Settings_GetMutable_trustedNormals(MR_TriangulationHelpers_Settings *_this)
MRC_API const MR_PointCloud *const * MR_TriangulationHelpers_Settings_Get_searchNeighbors(const MR_TriangulationHelpers_Settings *_this)
MRC_API int * MR_TriangulationHelpers_FanOptimizerQueueElement_GetMutable_prevId(MR_TriangulationHelpers_FanOptimizerQueueElement *_this)
MRC_API const MR_std_vector_std_pair_double_int * MR_TriangulationHelpers_TriangulatedFanData_Get_cacheAngleOrder(const MR_TriangulationHelpers_TriangulatedFanData *_this)
MRC_API int * MR_TriangulationHelpers_Settings_GetMutable_maxRemoves(MR_TriangulationHelpers_Settings *_this)
MRC_API const bool * MR_TriangulationHelpers_FanOptimizerQueueElement_Get_stable(const MR_TriangulationHelpers_FanOptimizerQueueElement *_this)
MRC_API float MR_TriangulationHelpers_findNumNeighbors(const MR_PointCloud *pointCloud, MR_VertId v, int numNeis, MR_std_vector_MR_VertId *neighbors, MR_FewSmallest_MR_PointsProjectionResult *tmp, const float *upDistLimitSq)
Finds at most given number of neighbors of v (v excluded)
MRC_API MR_TriangulationHelpers_TriangulatedFanData * MR_TriangulationHelpers_TriangulatedFanData_DefaultConstruct(void)
MRC_API bool * MR_TriangulationHelpers_Settings_GetMutable_automaticRadiusIncrease(MR_TriangulationHelpers_Settings *_this)
MRC_API void MR_TriangulationHelpers_FanOptimizerQueueElement_Set_nextId(MR_TriangulationHelpers_FanOptimizerQueueElement *_this, int value)
MRC_API MR_TriangulationHelpers_Settings * MR_TriangulationHelpers_Settings_DefaultConstruct(void)
MRC_API void MR_TriangulationHelpers_TriangulatedFanData_DestroyArray(const MR_TriangulationHelpers_TriangulatedFanData *_this)
Destroys a heap-allocated array of MR_TriangulationHelpers_TriangulatedFanData. Does nothing if the p...
MRC_API MR_TriangulationHelpers_Settings * MR_TriangulationHelpers_Settings_OffsetMutablePtr(MR_TriangulationHelpers_Settings *ptr, ptrdiff_t i)
Offsets a pointer to an array element by i positions (not bytes). Use only if you're certain that the...
MRC_API bool MR_less_MR_TriangulationHelpers_FanOptimizerQueueElement(const MR_TriangulationHelpers_FanOptimizerQueueElement *_this, const MR_TriangulationHelpers_FanOptimizerQueueElement *other)
MRC_API void MR_TriangulationHelpers_Settings_Set_critAngle(MR_TriangulationHelpers_Settings *_this, float value)
MRC_API int * MR_TriangulationHelpers_FanOptimizerQueueElement_GetMutable_nextId(MR_TriangulationHelpers_FanOptimizerQueueElement *_this)
MRC_API void MR_TriangulationHelpers_Settings_Set_automaticRadiusIncrease(MR_TriangulationHelpers_Settings *_this, bool value)
MRC_API const MR_VertCoords *const * MR_TriangulationHelpers_Settings_Get_trustedNormals(const MR_TriangulationHelpers_Settings *_this)
MRC_API void MR_TriangulationHelpers_FanOptimizerQueueElement_DestroyArray(const MR_TriangulationHelpers_FanOptimizerQueueElement *_this)
Destroys a heap-allocated array of MR_TriangulationHelpers_FanOptimizerQueueElement....
MRC_API float * MR_TriangulationHelpers_Settings_GetMutable_critAngle(MR_TriangulationHelpers_Settings *_this)
MRC_API const float * MR_TriangulationHelpers_Settings_Get_boundaryAngle(const MR_TriangulationHelpers_Settings *_this)
MRC_API MR_TriangulationHelpers_FanOptimizerQueueElement * MR_TriangulationHelpers_FanOptimizerQueueElement_DefaultConstruct(void)
MRC_API void MR_TriangulationHelpers_TriangulatedFanData_Set_border(MR_TriangulationHelpers_TriangulatedFanData *_this, MR_VertId value)
MRC_API void MR_TriangulationHelpers_FanOptimizerQueueElement_Set_weight(MR_TriangulationHelpers_FanOptimizerQueueElement *_this, float value)
MRC_API void MR_TriangulationHelpers_FanOptimizerQueueElement_Set_stable(MR_TriangulationHelpers_FanOptimizerQueueElement *_this, bool value)
MRC_API int * MR_TriangulationHelpers_FanOptimizerQueueElement_GetMutable_id(MR_TriangulationHelpers_FanOptimizerQueueElement *_this)
MRC_API void MR_TriangulationHelpers_filterNeighbors(const MR_VertCoords *normals, MR_VertId v, MR_std_vector_MR_VertId *neighbors)
Filter neighbors with crossing normals.
MRC_API const int * MR_TriangulationHelpers_FanOptimizerQueueElement_Get_nextId(const MR_TriangulationHelpers_FanOptimizerQueueElement *_this)
MRC_API const int * MR_TriangulationHelpers_Settings_Get_numNeis(const MR_TriangulationHelpers_Settings *_this)
MRC_API MR_TriangulationHelpers_Settings * MR_TriangulationHelpers_Settings_DefaultConstructArray(size_t num_elems)
MRC_API MR_TriangulationHelpers_TriangulatedFanData * MR_TriangulationHelpers_TriangulatedFanData_DefaultConstructArray(size_t num_elems)
MRC_API void MR_TriangulationHelpers_TriangulatedFanData_Destroy(const MR_TriangulationHelpers_TriangulatedFanData *_this)
Destroys a heap-allocated instance of MR_TriangulationHelpers_TriangulatedFanData....
MRC_API MR_std_optional_MR_AllLocalTriangulations * MR_TriangulationHelpers_buildUnitedLocalTriangulations(const MR_PointCloud *cloud, const MR_TriangulationHelpers_Settings *settings, const MR_std_function_bool_from_float *progress)
MRC_API void MR_TriangulationHelpers_FanOptimizerQueueElement_Destroy(const MR_TriangulationHelpers_FanOptimizerQueueElement *_this)
Destroys a heap-allocated instance of MR_TriangulationHelpers_FanOptimizerQueueElement....
MRC_API float ** MR_TriangulationHelpers_Settings_GetMutable_actualRadius(MR_TriangulationHelpers_Settings *_this)
MRC_API void MR_TriangulationHelpers_Settings_Destroy(const MR_TriangulationHelpers_Settings *_this)
Destroys a heap-allocated instance of MR_TriangulationHelpers_Settings. Does nothing if the pointer i...
MRC_API const float * MR_TriangulationHelpers_Settings_Get_critAngle(const MR_TriangulationHelpers_Settings *_this)
MRC_API float *const * MR_TriangulationHelpers_Settings_Get_actualRadius(const MR_TriangulationHelpers_Settings *_this)
struct MR_TriangulationHelpers_TriangulatedFanData MR_TriangulationHelpers_TriangulatedFanData
Data with caches for optimizing fan triangulation.
Definition MRPointCloudTriangulationHelpers.h:33
MRC_API MR_FewSmallest_MR_PointsProjectionResult * MR_TriangulationHelpers_TriangulatedFanData_GetMutable_nearesetPoints(MR_TriangulationHelpers_TriangulatedFanData *_this)
MRC_API const MR_FewSmallest_MR_PointsProjectionResult * MR_TriangulationHelpers_TriangulatedFanData_Get_nearesetPoints(const MR_TriangulationHelpers_TriangulatedFanData *_this)
MRC_API MR_std_optional_MR_VertBitSet * MR_TriangulationHelpers_findBoundaryPoints(const MR_PointCloud *pointCloud, const MR_TriangulationHelpers_Settings *settings, MR_PassBy cb_pass_by, MR_std_function_bool_from_float *cb)
MRC_API const MR_TriangulationHelpers_Settings * MR_TriangulationHelpers_Settings_OffsetPtr(const MR_TriangulationHelpers_Settings *ptr, ptrdiff_t i)
Offsets a pointer to an array element by i positions (not bytes). Use only if you're certain that the...
MRC_API float * MR_TriangulationHelpers_Settings_GetMutable_radius(MR_TriangulationHelpers_Settings *_this)
MRC_API void MR_TriangulationHelpers_Settings_Set_radius(MR_TriangulationHelpers_Settings *_this, float value)
MRC_API const MR_TriangulationHelpers_FanOptimizerQueueElement * MR_TriangulationHelpers_FanOptimizerQueueElement_OffsetPtr(const MR_TriangulationHelpers_FanOptimizerQueueElement *ptr, ptrdiff_t i)
Offsets a pointer to an array element by i positions (not bytes). Use only if you're certain that the...
MRC_API void MR_TriangulationHelpers_FanOptimizerQueueElement_Set_id(MR_TriangulationHelpers_FanOptimizerQueueElement *_this, int value)
MRC_API const float * MR_TriangulationHelpers_Settings_Get_radius(const MR_TriangulationHelpers_Settings *_this)
MRC_API MR_TriangulationHelpers_Settings * MR_TriangulationHelpers_Settings_ConstructFromAnother(const MR_TriangulationHelpers_Settings *_other)
MRC_API void MR_TriangulationHelpers_Settings_Set_allNeighbors(MR_TriangulationHelpers_Settings *_this, MR_std_vector_MR_VertId *value)
MRC_API void MR_TriangulationHelpers_FanOptimizerQueueElement_Set_prevId(MR_TriangulationHelpers_FanOptimizerQueueElement *_this, int value)
MRC_API MR_TriangulationHelpers_FanOptimizerQueueElement * MR_TriangulationHelpers_FanOptimizerQueueElement_AssignFromAnother(MR_TriangulationHelpers_FanOptimizerQueueElement *_this, const MR_TriangulationHelpers_FanOptimizerQueueElement *_other)
MRC_API MR_std_vector_std_pair_double_int * MR_TriangulationHelpers_TriangulatedFanData_GetMutable_cacheAngleOrder(MR_TriangulationHelpers_TriangulatedFanData *_this)
MRC_API MR_TriangulationHelpers_FanOptimizerQueueElement * MR_TriangulationHelpers_FanOptimizerQueueElement_DefaultConstructArray(size_t num_elems)
MRC_API MR_TriangulationHelpers_Settings * MR_TriangulationHelpers_Settings_ConstructFrom(float radius, int numNeis, float critAngle, float boundaryAngle, const MR_VertCoords *trustedNormals, bool automaticRadiusIncrease, int maxRemoves, MR_std_vector_MR_VertId *allNeighbors, float *actualRadius, const MR_PointCloud *searchNeighbors)
MRC_API MR_TriangulationHelpers_FanOptimizerQueueElement * MR_TriangulationHelpers_FanOptimizerQueueElement_ConstructFrom(float weight, int id, int prevId, int nextId, bool stable)
MRC_API bool * MR_TriangulationHelpers_FanOptimizerQueueElement_GetMutable_stable(MR_TriangulationHelpers_FanOptimizerQueueElement *_this)
MRC_API float * MR_TriangulationHelpers_FanOptimizerQueueElement_GetMutable_weight(MR_TriangulationHelpers_FanOptimizerQueueElement *_this)
MRC_API MR_std_vector_MR_VertId *const * MR_TriangulationHelpers_Settings_Get_allNeighbors(const MR_TriangulationHelpers_Settings *_this)
struct MR_TriangulationHelpers_FanOptimizerQueueElement MR_TriangulationHelpers_FanOptimizerQueueElement
Generated from class MR::TriangulationHelpers::FanOptimizerQueueElement.
Definition MRPointCloudTriangulationHelpers.h:26
MRC_API const MR_VertId * MR_TriangulationHelpers_TriangulatedFanData_Get_border(const MR_TriangulationHelpers_TriangulatedFanData *_this)
MRC_API void MR_TriangulationHelpers_TriangulatedFanData_Set_neighbors(MR_TriangulationHelpers_TriangulatedFanData *_this, MR_PassBy value_pass_by, MR_std_vector_MR_VertId *value)
MRC_API MR_std_optional_std_vector_MR_SomeLocalTriangulations * MR_TriangulationHelpers_buildLocalTriangulations(const MR_PointCloud *cloud, const MR_TriangulationHelpers_Settings *settings, const MR_std_function_bool_from_float *progress)
MRC_API MR_TriangulationHelpers_TriangulatedFanData * MR_TriangulationHelpers_TriangulatedFanData_OffsetMutablePtr(MR_TriangulationHelpers_TriangulatedFanData *ptr, ptrdiff_t i)
Offsets a pointer to an array element by i positions (not bytes). Use only if you're certain that the...
MRC_API const MR_std_vector_MR_VertId * MR_TriangulationHelpers_TriangulatedFanData_Get_neighbors(const MR_TriangulationHelpers_TriangulatedFanData *_this)
MRC_API void MR_TriangulationHelpers_Settings_Set_actualRadius(MR_TriangulationHelpers_Settings *_this, float *value)
MRC_API void MR_TriangulationHelpers_TriangulatedFanData_Set_cacheAngleOrder(MR_TriangulationHelpers_TriangulatedFanData *_this, MR_PassBy value_pass_by, MR_std_vector_std_pair_double_int *value)
MRC_API const int * MR_TriangulationHelpers_FanOptimizerQueueElement_Get_prevId(const MR_TriangulationHelpers_FanOptimizerQueueElement *_this)
MRC_API void MR_TriangulationHelpers_TriangulatedFanData_Set_nearesetPoints(MR_TriangulationHelpers_TriangulatedFanData *_this, MR_PassBy value_pass_by, MR_FewSmallest_MR_PointsProjectionResult *value)
MRC_API MR_std_vector_MR_VertId ** MR_TriangulationHelpers_Settings_GetMutable_allNeighbors(MR_TriangulationHelpers_Settings *_this)
MRC_API const MR_TriangulationHelpers_TriangulatedFanData * MR_TriangulationHelpers_TriangulatedFanData_OffsetPtr(const MR_TriangulationHelpers_TriangulatedFanData *ptr, ptrdiff_t i)
Offsets a pointer to an array element by i positions (not bytes). Use only if you're certain that the...
MRC_API const int * MR_TriangulationHelpers_FanOptimizerQueueElement_Get_id(const MR_TriangulationHelpers_FanOptimizerQueueElement *_this)
MRC_API MR_TriangulationHelpers_TriangulatedFanData * MR_TriangulationHelpers_TriangulatedFanData_AssignFromAnother(MR_TriangulationHelpers_TriangulatedFanData *_this, MR_PassBy _other_pass_by, MR_TriangulationHelpers_TriangulatedFanData *_other)
MRC_API MR_VertId * MR_TriangulationHelpers_TriangulatedFanData_GetMutable_border(MR_TriangulationHelpers_TriangulatedFanData *_this)
struct MR_TriangulationHelpers_Settings MR_TriangulationHelpers_Settings
Generated from class MR::TriangulationHelpers::Settings.
Definition MRPointCloudTriangulationHelpers.h:36
MRC_API void MR_TriangulationHelpers_Settings_Set_trustedNormals(MR_TriangulationHelpers_Settings *_this, const MR_VertCoords *value)
MRC_API bool MR_TriangulationHelpers_FanOptimizerQueueElement_isOutdated(const MR_TriangulationHelpers_FanOptimizerQueueElement *_this, const MR_std_vector_MR_VertId *neighbors)
MRC_API void MR_TriangulationHelpers_Settings_Set_searchNeighbors(MR_TriangulationHelpers_Settings *_this, const MR_PointCloud *value)
MRC_API MR_std_vector_MR_VertId * MR_TriangulationHelpers_TriangulatedFanData_GetMutable_neighbors(MR_TriangulationHelpers_TriangulatedFanData *_this)
MRC_API void MR_TriangulationHelpers_Settings_Set_maxRemoves(MR_TriangulationHelpers_Settings *_this, int value)
MRC_API int * MR_TriangulationHelpers_Settings_GetMutable_numNeis(MR_TriangulationHelpers_Settings *_this)
MR_PassBy
Definition common.h:19
#define MRC_API
Definition exports.h:11
Definition MRId.h:55