MeshLib C Docs
Loading...
Searching...
No Matches
MRMultiwayICP.h
Go to the documentation of this file.
1#pragma once
2
4#include <MRCMisc/common.h>
5#include <MRCMisc/exports.h>
6
7#include <stdbool.h>
8#include <stddef.h>
9#include <stdint.h>
10
11#ifdef __cplusplus
12extern "C" {
13#endif
14
15typedef struct MR_ICPPairData MR_ICPPairData; // Defined in `#include <MRCMesh/MRICP.h>`.
16typedef struct MR_ICPProperties MR_ICPProperties; // Defined in `#include <MRCMesh/MRICP.h>`.
17typedef struct MR_IPointPairs MR_IPointPairs; // Defined in `#include <MRCMesh/MRICP.h>`.
18typedef struct MR_Id_MR_ICPElemtTag MR_Id_MR_ICPElemtTag; // Defined in `#include <MRCMesh/MRId.h>`.
19typedef struct MR_ObjBitSet MR_ObjBitSet; // Defined in `#include <MRCMesh/MRBitSet.h>`.
20typedef struct MR_TypedBitSet_MR_Id_MR_ICPElemtTag MR_TypedBitSet_MR_Id_MR_ICPElemtTag; // Defined in `#include <MRCMesh/MRBitSet.h>`.
21typedef struct MR_Vector_MR_AffineXf3f_MR_ObjId MR_Vector_MR_AffineXf3f_MR_ObjId; // Defined in `#include <MRCMesh/MRVector.h>`.
22typedef struct MR_Vector_MR_MeshOrPointsXf_MR_ObjId MR_Vector_MR_MeshOrPointsXf_MR_ObjId; // Defined in `#include <MRCMesh/MRVector.h>`.
24typedef struct MR_std_function_bool_from_float MR_std_function_bool_from_float; // Defined in `#include <MRCMisc/std_function_bool_from_float.h>`.
25typedef struct MR_std_function_void_from_const_MR_Vector3f_ref_MR_MeshOrPoints_ProjectionResult_ref_MR_ObjId_ref MR_std_function_void_from_const_MR_Vector3f_ref_MR_MeshOrPoints_ProjectionResult_ref_MR_ObjId_ref; // Defined in `#include <MRCMisc/std_function_void_from_const_MR_Vector3f_ref_MR_MeshOrPoints_ProjectionResult_ref_MR_ObjId_r__f9dd.h>`.
26typedef struct MR_std_function_void_from_int32_t MR_std_function_void_from_int32_t; // Defined in `#include <MRCMisc/std_function_void_from_int32_t.h>`.
27typedef struct MR_std_string MR_std_string; // Defined in `#include <MRCMisc/std_string.h>`.
28typedef struct MR_std_vector_MR_ICPGroupPair MR_std_vector_MR_ICPGroupPair; // Defined in `#include <MRCMisc/std_vector_MR_ICPGroupPair.h>`.
29
30
36
42
46
50
52enum // MR_MultiwayICPSamplingParameters_CascadeMode
53{
57};
58
65
70
74
79
84
88
93
97
102
105
108
112
115
120
123
126
132
137
141
146
150
155
158
161
165
168
172
175
178
183
188
193
197
203
206
209
216
223
231
240
244
247
250
256
261
267
274
280
287
292
296
301
307
312
318
322
327
331
334
337
341
344
347
352
356
359
362
368
371
374
379
388
397
403
410
416
421
428MRC_API float MR_MultiwayICP_getMeanSqDistToPoint(const MR_MultiwayICP *_this, const double *value);
429
436MRC_API float MR_MultiwayICP_getMeanSqDistToPlane(const MR_MultiwayICP *_this, const double *value);
437
442
447
452
458
462
468
474
480
481#ifdef __cplusplus
482} // extern "C"
483#endif
struct MR_std_function_bool_from_float MR_std_function_bool_from_float
Definition MR3mf.h:10
struct MR_ObjBitSet MR_ObjBitSet
Definition MRAABBTreeBase.h:27
struct MR_Vector_MR_AffineXf3f_MR_ObjId MR_Vector_MR_AffineXf3f_MR_ObjId
Definition MRAABBTreeObjects.h:16
struct MR_Vector_MR_MeshOrPointsXf_MR_ObjId MR_Vector_MR_MeshOrPointsXf_MR_ObjId
Definition MRAABBTreeObjects.h:17
struct MR_TypedBitSet_MR_Id_MR_ICPElemtTag MR_TypedBitSet_MR_Id_MR_ICPElemtTag
Definition MRBitSet.h:159
struct MR_Id_MR_ICPElemtTag MR_Id_MR_ICPElemtTag
Definition MRBitSet.h:28
struct MR_std_string MR_std_string
Definition MRE57.h:22
struct MR_ICPGroupPairs MR_ICPGroupPairs
Definition MRICP.h:20
struct MR_ICPGroupPair MR_ICPGroupPair
Definition MRICP.h:19
struct MR_ICPPairData MR_ICPPairData
Definition MRICP.h:34
struct MR_ICPProperties MR_ICPProperties
Generated from class MR::ICPProperties.
Definition MRICP.h:61
struct MR_IPointPairs MR_IPointPairs
Definition MRICP.h:49
MRC_API MR_uint64_t MR_IICPTreeIndexer_getNumElements(const MR_IICPTreeIndexer *_this, int32_t l)
MRC_API void MR_MultiwayICPSamplingParameters_Set_maxGroupSize(MR_MultiwayICPSamplingParameters *_this, int32_t value)
MRC_API MR_ICPGroupPairs * MR_ICPGroupPairs_DefaultConstructArray(size_t num_elems)
MRC_API const MR_MultiwayICP * MR_MultiwayICP_OffsetPtr(const MR_MultiwayICP *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_IICPTreeIndexer * MR_MultiwayICP_getCascadeIndexer(const MR_MultiwayICP *_this)
MRC_API void MR_MultiwayICP_devEnableIndependentEquationsMode(MR_MultiwayICP *_this, bool on)
MRC_API MR_uint64_t MR_ICPGroupPairs_size(const MR_ICPGroupPairs *_this)
struct MR_MultiwayICPSamplingParameters MR_MultiwayICPSamplingParameters
Definition MRMultiwayICP.h:49
MRC_API MR_MultiwayICPSamplingParameters * MR_MultiwayICPSamplingParameters_ConstructFromAnother(MR_PassBy _other_pass_by, MR_MultiwayICPSamplingParameters *_other)
MRC_API void MR_MultiwayICP_Destroy(const MR_MultiwayICP *_this)
Destroys a heap-allocated instance of MR_MultiwayICP. Does nothing if the pointer is null.
MRC_API MR_MultiwayICP * MR_MultiwayICP_Construct(const MR_Vector_MR_MeshOrPointsXf_MR_ObjId *objects, const MR_MultiwayICPSamplingParameters *samplingParams)
MRC_API const MR_ICPProperties * MR_MultiwayICP_getParams(const MR_MultiwayICP *_this)
struct MR_IICPTreeIndexer MR_IICPTreeIndexer
Definition MRMultiwayICP.h:45
MRC_API const MR_ICPPairData * MR_ICPGroupPairs_index_const(const MR_ICPGroupPairs *_this, MR_uint64_t idx)
MRC_API MR_MultiwayICP * MR_MultiwayICP_ConstructFromAnother(MR_PassBy _other_pass_by, MR_MultiwayICP *_other)
MRC_API const MR_ICPGroupPairs * MR_ICPGroupPairs_OffsetPtr(const MR_ICPGroupPairs *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_MultiwayICPSamplingParameters_DestroyArray(const MR_MultiwayICPSamplingParameters *_this)
Destroys a heap-allocated array of MR_MultiwayICPSamplingParameters. Does nothing if the pointer is n...
MRC_API const MR_IICPTreeIndexer * MR_IICPTreeIndexer_OffsetPtr(const MR_IICPTreeIndexer *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 MR_TypedBitSet_MR_Id_MR_ICPElemtTag * MR_IICPTreeIndexer_getElementNodes(const MR_IICPTreeIndexer *_this, int32_t l, const MR_Id_MR_ICPElemtTag *eId)
MRC_API MR_std_string * MR_MultiwayICP_getStatusInfo(const MR_MultiwayICP *_this)
MRC_API const MR_ObjVertId * MR_ICPGroupPair_Get_srcId(const MR_ICPGroupPair *_this)
MRC_API MR_ICPGroupPair * MR_ICPGroupPair_DefaultConstructArray(size_t num_elems)
MRC_API MR_ICPPairData * MR_ICPGroupPairs_index(MR_ICPGroupPairs *_this, MR_uint64_t idx)
struct MR_Vector_MR_Vector_MR_Vector_MR_ICPGroupPairs_MR_Id_MR_ICPElemtTag_MR_Id_MR_ICPElemtTag_int32_t MR_Vector_MR_Vector_MR_Vector_MR_ICPGroupPairs_MR_Id_MR_ICPElemtTag_MR_Id_MR_ICPElemtTag_int32_t
Definition MRMultiwayICP.h:23
MRC_API MR_ICPGroupPair * MR_ICPGroupPair_AssignFromAnother(MR_ICPGroupPair *_this, const MR_ICPGroupPair *_other)
MRC_API int32_t * MR_MultiwayICPSamplingParameters_GetMutable_maxGroupSize(MR_MultiwayICPSamplingParameters *_this)
MRC_API const MR_MultiwayICPSamplingParameters_CascadeMode * MR_MultiwayICPSamplingParameters_Get_cascadeMode(const MR_MultiwayICPSamplingParameters *_this)
MRC_API MR_ICPPairData * MR_ICPGroupPair_MutableUpcastTo_MR_ICPPairData(MR_ICPGroupPair *object)
Upcasts an instance of MR::ICPGroupPair to its base class MR::ICPPairData.
MRC_API MR_ICPGroupPairs * MR_ICPGroupPairs_ConstructFromAnother(MR_PassBy _other_pass_by, MR_ICPGroupPairs *_other)
MRC_API void MR_MultiwayICPSamplingParameters_Set_samplingVoxelSize(MR_MultiwayICPSamplingParameters *_this, float value)
struct MR_MultiwayICP MR_MultiwayICP
Definition MRMultiwayICP.h:64
MRC_API void MR_ICPGroupPair_DestroyArray(const MR_ICPGroupPair *_this)
Destroys a heap-allocated array of MR_ICPGroupPair. Does nothing if the pointer is null.
MRC_API bool MR_MultiwayICP_updateAllPointPairs(MR_MultiwayICP *_this, MR_PassBy cb_pass_by, MR_std_function_bool_from_float *cb)
MRC_API MR_uint64_t MR_MultiwayICP_getNumActivePairs(const MR_MultiwayICP *_this)
MRC_API MR_MultiwayICPSamplingParameters * MR_MultiwayICPSamplingParameters_AssignFromAnother(MR_MultiwayICPSamplingParameters *_this, MR_PassBy _other_pass_by, MR_MultiwayICPSamplingParameters *_other)
MRC_API const int32_t * MR_MultiwayICPSamplingParameters_Get_maxGroupSize(const MR_MultiwayICPSamplingParameters *_this)
MRC_API MR_IICPTreeIndexer * MR_IICPTreeIndexer_OffsetMutablePtr(MR_IICPTreeIndexer *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 MR_MultiwayICP * MR_MultiwayICP_AssignFromAnother(MR_MultiwayICP *_this, MR_PassBy _other_pass_by, MR_MultiwayICP *_other)
MRC_API bool MR_MultiwayICP_resamplePoints(MR_MultiwayICP *_this, const MR_MultiwayICPSamplingParameters *samplingParams)
MRC_API MR_MultiwayICPSamplingParameters * MR_MultiwayICPSamplingParameters_DefaultConstructArray(size_t num_elems)
MRC_API void MR_MultiwayICPSamplingParameters_Set_cascadeMode(MR_MultiwayICPSamplingParameters *_this, MR_MultiwayICPSamplingParameters_CascadeMode value)
MRC_API const MR_IPointPairs * MR_ICPGroupPairs_UpcastTo_MR_IPointPairs(const MR_ICPGroupPairs *object)
MRC_API MR_MultiwayICPSamplingParameters * MR_MultiwayICPSamplingParameters_DefaultConstruct(void)
MRC_API MR_std_function_bool_from_float * MR_MultiwayICPSamplingParameters_GetMutable_cb(MR_MultiwayICPSamplingParameters *_this)
MRC_API MR_ICPGroupPair * MR_ICPGroupPair_ConstructFromAnother(const MR_ICPGroupPair *_other)
MRC_API void MR_MultiwayICP_setParams(MR_MultiwayICP *_this, const MR_ICPProperties *prop)
MRC_API MR_ObjVertId * MR_ICPGroupPair_GetMutable_tgtClosestId(MR_ICPGroupPair *_this)
MRC_API MR_ObjVertId * MR_ICPGroupPair_GetMutable_srcId(MR_ICPGroupPair *_this)
MRC_API MR_ICPGroupPair * MR_ICPGroupPair_DefaultConstruct(void)
MRC_API void MR_ICPGroupPair_Destroy(const MR_ICPGroupPair *_this)
Destroys a heap-allocated instance of MR_ICPGroupPair. Does nothing if the pointer is null.
MRC_API MR_ICPGroupPairs * MR_ICPGroupPairs_DefaultConstruct(void)
MRC_API void MR_MultiwayICP_setPerIterationCallback(MR_MultiwayICP *_this, MR_PassBy callback_pass_by, MR_std_function_void_from_int32_t *callback)
MRC_API const MR_ObjVertId * MR_ICPGroupPair_Get_tgtClosestId(const MR_ICPGroupPair *_this)
MRC_API const MR_std_function_bool_from_float * MR_MultiwayICPSamplingParameters_Get_cb(const MR_MultiwayICPSamplingParameters *_this)
MRC_API const MR_MultiwayICPSamplingParameters * MR_MultiwayICPSamplingParameters_OffsetPtr(const MR_MultiwayICPSamplingParameters *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 MR_ICPGroupPairs * MR_ICPGroupPairs_AssignFromAnother(MR_ICPGroupPairs *_this, MR_PassBy _other_pass_by, MR_ICPGroupPairs *_other)
MRC_API void MR_IICPTreeIndexer_DestroyArray(const MR_IICPTreeIndexer *_this)
Destroys a heap-allocated array of MR_IICPTreeIndexer. Does nothing if the pointer is null.
MRC_API MR_MultiwayICPSamplingParameters * MR_MultiwayICPSamplingParameters_ConstructFrom(float samplingVoxelSize, int32_t maxGroupSize, MR_MultiwayICPSamplingParameters_CascadeMode cascadeMode, MR_PassBy cb_pass_by, MR_std_function_bool_from_float *cb)
MRC_API void MR_MultiwayICP_DestroyArray(const MR_MultiwayICP *_this)
Destroys a heap-allocated array of MR_MultiwayICP. Does nothing if the pointer is null.
int32_t MR_MultiwayICPSamplingParameters_CascadeMode
Definition MRMultiwayICP.h:51
MRC_API MR_MultiwayICP * MR_MultiwayICP_OffsetMutablePtr(MR_MultiwayICP *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_ICPGroupPair * MR_ICPGroupPair_OffsetPtr(const MR_ICPGroupPair *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 MR_MultiwayICPSamplingParameters_CascadeMode * MR_MultiwayICPSamplingParameters_GetMutable_cascadeMode(MR_MultiwayICPSamplingParameters *_this)
MRC_API MR_ICPGroupPairs * MR_ICPGroupPairs_OffsetMutablePtr(MR_ICPGroupPairs *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 MR_uint64_t MR_MultiwayICP_getNumSamples(const MR_MultiwayICP *_this)
MRC_API MR_MultiwayICPSamplingParameters * MR_MultiwayICPSamplingParameters_OffsetMutablePtr(MR_MultiwayICPSamplingParameters *ptr, ptrdiff_t i)
Offsets a pointer to an array element by i positions (not bytes). Use only if you're certain that the...
struct MR_std_function_void_from_int32_t MR_std_function_void_from_int32_t
Definition MRMultiwayICP.h:26
MRC_API const MR_std_vector_MR_ICPGroupPair * MR_ICPGroupPairs_Get_vec(const MR_ICPGroupPairs *_this)
MRC_API void MR_MultiwayICPSamplingParameters_Destroy(const MR_MultiwayICPSamplingParameters *_this)
Destroys a heap-allocated instance of MR_MultiwayICPSamplingParameters. Does nothing if the pointer i...
MRC_API bool MR_MultiwayICP_devIndependentEquationsModeEnabled(const MR_MultiwayICP *_this)
MRC_API float * MR_MultiwayICPSamplingParameters_GetMutable_samplingVoxelSize(MR_MultiwayICPSamplingParameters *_this)
MRC_API void MR_ICPGroupPair_Set_srcId(MR_ICPGroupPair *_this, MR_ObjVertId value)
MRC_API void MR_updateGroupPairs(MR_ICPGroupPairs *pairs, const MR_Vector_MR_MeshOrPointsXf_MR_ObjId *objs, MR_PassBy srcProjector_pass_by, MR_std_function_void_from_const_MR_Vector3f_ref_MR_MeshOrPoints_ProjectionResult_ref_MR_ObjId_ref *srcProjector, MR_PassBy tgtProjector_pass_by, MR_std_function_void_from_const_MR_Vector3f_ref_MR_MeshOrPoints_ProjectionResult_ref_MR_ObjId_ref *tgtProjector, float cosThreshold, float distThresholdSq, bool mutualClosest)
MRC_API void MR_ICPGroupPairs_Destroy(const MR_ICPGroupPairs *_this)
Destroys a heap-allocated instance of MR_ICPGroupPairs. Does nothing if the pointer is null.
MRC_API const MR_Vector_MR_Vector_MR_Vector_MR_ICPGroupPairs_MR_Id_MR_ICPElemtTag_MR_Id_MR_ICPElemtTag_int32_t * MR_MultiwayICP_getPairsPerLayer(const MR_MultiwayICP *_this)
MRC_API float MR_MultiwayICP_getMeanSqDistToPlane(const MR_MultiwayICP *_this, const double *value)
MRC_API float MR_MultiwayICP_getMeanSqDistToPoint(const MR_MultiwayICP *_this, const double *value)
MRC_API void MR_ICPGroupPair_Set_tgtClosestId(MR_ICPGroupPair *_this, MR_ObjVertId value)
MRC_API MR_uint64_t MR_IICPTreeIndexer_getNumLayers(const MR_IICPTreeIndexer *_this)
MRC_API const float * MR_MultiwayICPSamplingParameters_Get_samplingVoxelSize(const MR_MultiwayICPSamplingParameters *_this)
MRC_API const MR_ICPPairData * MR_ICPGroupPair_UpcastTo_MR_ICPPairData(const MR_ICPGroupPair *object)
MRC_API void MR_IICPTreeIndexer_Destroy(const MR_IICPTreeIndexer *_this)
Destroys a heap-allocated instance of MR_IICPTreeIndexer. Does nothing if the pointer is null.
MRC_API void MR_ICPGroupPairs_DestroyArray(const MR_ICPGroupPairs *_this)
Destroys a heap-allocated array of MR_ICPGroupPairs. Does nothing if the pointer is null.
@ MR_MultiwayICPSamplingParameters_CascadeMode_AABBTreeBased
separates objects on groups based on their index in ICPObjects (good if all objects about the size of...
Definition MRMultiwayICP.h:56
@ MR_MultiwayICPSamplingParameters_CascadeMode_Sequential
Definition MRMultiwayICP.h:54
MRC_API bool MR_IICPTreeIndexer_fromSameNode(const MR_IICPTreeIndexer *_this, int32_t l, const MR_Id_MR_ICPElemtTag *eI, const MR_Id_MR_ICPElemtTag *eJ)
MRC_API MR_Vector_MR_AffineXf3f_MR_ObjId * MR_MultiwayICP_calculateTransformations(MR_MultiwayICP *_this, MR_PassBy cb_pass_by, MR_std_function_bool_from_float *cb)
struct MR_std_function_void_from_const_MR_Vector3f_ref_MR_MeshOrPoints_ProjectionResult_ref_MR_ObjId_ref MR_std_function_void_from_const_MR_Vector3f_ref_MR_MeshOrPoints_ProjectionResult_ref_MR_ObjId_ref
Definition MRMultiwayICP.h:25
MRC_API MR_std_vector_MR_ICPGroupPair * MR_ICPGroupPairs_GetMutable_vec(MR_ICPGroupPairs *_this)
MRC_API void MR_MultiwayICPSamplingParameters_Set_cb(MR_MultiwayICPSamplingParameters *_this, MR_PassBy value_pass_by, MR_std_function_bool_from_float *value)
MRC_API MR_ICPGroupPair * MR_ICPGroupPair_OffsetMutablePtr(MR_ICPGroupPair *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_ICPGroupPairs_Set_vec(MR_ICPGroupPairs *_this, MR_PassBy value_pass_by, MR_std_vector_MR_ICPGroupPair *value)
MRC_API MR_ObjBitSet * MR_IICPTreeIndexer_getElementLeaves(const MR_IICPTreeIndexer *_this, int32_t l, const MR_Id_MR_ICPElemtTag *eId)
MRC_API MR_IPointPairs * MR_ICPGroupPairs_MutableUpcastTo_MR_IPointPairs(MR_ICPGroupPairs *object)
Upcasts an instance of MR::ICPGroupPairs to its base class MR::IPointPairs.
MRC_API MR_Vector_MR_AffineXf3f_MR_ObjId * MR_MultiwayICP_calculateTransformationsFixFirst(MR_MultiwayICP *_this, MR_PassBy cb_pass_by, MR_std_function_bool_from_float *cb)
struct MR_std_vector_MR_ICPGroupPair MR_std_vector_MR_ICPGroupPair
Definition MRMultiwayICP.h:28
MR_PassBy
Definition common.h:19
uint64_t MR_uint64_t
Definition common.h:14
#define MRC_API
Definition exports.h:11
Generated from class MR::ObjVertId.
Definition MRGridSampling.h:30