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
10#ifdef __cplusplus
11extern "C" {
12#endif
13
14typedef struct MR_ICPPairData MR_ICPPairData; // Defined in `#include <MRCMesh/MRICP.h>`.
15typedef struct MR_ICPProperties MR_ICPProperties; // Defined in `#include <MRCMesh/MRICP.h>`.
16typedef struct MR_IPointPairs MR_IPointPairs; // Defined in `#include <MRCMesh/MRICP.h>`.
17typedef struct MR_Id_MR_ICPElemtTag MR_Id_MR_ICPElemtTag; // Defined in `#include <MRCMesh/MRId.h>`.
18typedef struct MR_ObjBitSet MR_ObjBitSet; // Defined in `#include <MRCMesh/MRBitSet.h>`.
19typedef struct MR_TypedBitSet_MR_Id_MR_ICPElemtTag MR_TypedBitSet_MR_Id_MR_ICPElemtTag; // Defined in `#include <MRCMesh/MRBitSet.h>`.
20typedef struct MR_Vector_MR_AffineXf3f_MR_ObjId MR_Vector_MR_AffineXf3f_MR_ObjId; // Defined in `#include <MRCMesh/MRVector.h>`.
21typedef struct MR_Vector_MR_MeshOrPointsXf_MR_ObjId MR_Vector_MR_MeshOrPointsXf_MR_ObjId; // 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_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>`.
25typedef struct MR_std_function_void_from_int MR_std_function_void_from_int; // Defined in `#include <MRCMisc/std_function_void_from_int.h>`.
26typedef struct MR_std_string MR_std_string; // Defined in `#include <MRCMisc/std_string.h>`.
27typedef struct MR_std_vector_MR_ICPGroupPair MR_std_vector_MR_ICPGroupPair; // Defined in `#include <MRCMisc/std_vector_MR_ICPGroupPair.h>`.
28
29
35
41
45
49
56
63
68
72
77
82
86
91
95
100
103
106
110
113
118
121
124
130
135
139
144
148
153
156
159
163
166
170
173
176
181
186
191
195
201
204
207
214
221
229
238
242
245
248
254
259
265
272
278
285
290
294
299
305
310
316
320
325
329
332
335
339
342
345
350
354
357
360
366
369
372
377
386
395
401
408
414
419
426MRC_API float MR_MultiwayICP_getMeanSqDistToPoint(const MR_MultiwayICP *_this, const double *value);
427
434MRC_API float MR_MultiwayICP_getMeanSqDistToPlane(const MR_MultiwayICP *_this, const double *value);
435
440
445
450
456
460
466
472
478
479#ifdef __cplusplus
480} // extern "C"
481#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:26
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:158
struct MR_Id_MR_ICPElemtTag MR_Id_MR_ICPElemtTag
Definition MRBitSet.h:27
struct MR_std_string MR_std_string
Definition MRE57.h:22
struct MR_ICPGroupPairs MR_ICPGroupPairs
Definition MRICP.h:19
struct MR_ICPGroupPair MR_ICPGroupPair
Definition MRICP.h:18
struct MR_ICPPairData MR_ICPPairData
Definition MRICP.h:33
struct MR_ICPProperties MR_ICPProperties
Generated from class MR::ICPProperties.
Definition MRICP.h:60
struct MR_IPointPairs MR_IPointPairs
Definition MRICP.h:48
MRC_API MR_ICPGroupPairs * MR_ICPGroupPairs_DefaultConstructArray(size_t num_elems)
MR_MultiwayICPSamplingParameters_CascadeMode
Definition MRMultiwayICP.h:51
@ 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:54
@ MR_MultiwayICPSamplingParameters_CascadeMode_Sequential
Definition MRMultiwayICP.h:52
MRC_API MR_TypedBitSet_MR_Id_MR_ICPElemtTag * MR_IICPTreeIndexer_getElementNodes(const MR_IICPTreeIndexer *_this, int l, const MR_Id_MR_ICPElemtTag *eId)
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 void MR_MultiwayICP_setPerIterationCallback(MR_MultiwayICP *_this, MR_PassBy callback_pass_by, MR_std_function_void_from_int *callback)
MRC_API void MR_MultiwayICPSamplingParameters_Set_maxGroupSize(MR_MultiwayICPSamplingParameters *_this, int value)
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:48
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:44
struct MR_std_function_void_from_int MR_std_function_void_from_int
Definition MRMultiwayICP.h:25
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_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)
MRC_API MR_ICPGroupPair * MR_ICPGroupPair_AssignFromAnother(MR_ICPGroupPair *_this, const MR_ICPGroupPair *_other)
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 MR_uint64_t MR_IICPTreeIndexer_getNumElements(const MR_IICPTreeIndexer *_this, int l)
MRC_API void MR_MultiwayICPSamplingParameters_Set_samplingVoxelSize(MR_MultiwayICPSamplingParameters *_this, float value)
struct MR_MultiwayICP MR_MultiwayICP
Definition MRMultiwayICP.h:62
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 bool MR_IICPTreeIndexer_fromSameNode(const MR_IICPTreeIndexer *_this, int l, const MR_Id_MR_ICPElemtTag *eI, const MR_Id_MR_ICPElemtTag *eJ)
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 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_Vector_MR_Vector_MR_Vector_MR_ICPGroupPairs_MR_Id_MR_ICPElemtTag_MR_Id_MR_ICPElemtTag_int * MR_MultiwayICP_getPairsPerLayer(const MR_MultiwayICP *_this)
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 const MR_ObjVertId * MR_ICPGroupPair_Get_tgtClosestId(const MR_ICPGroupPair *_this)
MRC_API MR_ObjBitSet * MR_IICPTreeIndexer_getElementLeaves(const MR_IICPTreeIndexer *_this, int l, const MR_Id_MR_ICPElemtTag *eId)
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 int * MR_MultiwayICPSamplingParameters_GetMutable_maxGroupSize(MR_MultiwayICPSamplingParameters *_this)
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 void MR_MultiwayICP_DestroyArray(const MR_MultiwayICP *_this)
Destroys a heap-allocated array of MR_MultiwayICP. Does nothing if the pointer is null.
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...
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 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 MR_MultiwayICPSamplingParameters * MR_MultiwayICPSamplingParameters_ConstructFrom(float samplingVoxelSize, int maxGroupSize, MR_MultiwayICPSamplingParameters_CascadeMode cascadeMode, MR_PassBy cb_pass_by, MR_std_function_bool_from_float *cb)
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)
struct MR_Vector_MR_Vector_MR_Vector_MR_ICPGroupPairs_MR_Id_MR_ICPElemtTag_MR_Id_MR_ICPElemtTag_int MR_Vector_MR_Vector_MR_Vector_MR_ICPGroupPairs_MR_Id_MR_ICPElemtTag_MR_Id_MR_ICPElemtTag_int
Definition MRMultiwayICP.h:22
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.
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:24
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_IPointPairs * MR_ICPGroupPairs_MutableUpcastTo_MR_IPointPairs(MR_ICPGroupPairs *object)
Upcasts an instance of MR::ICPGroupPairs to its base class MR::IPointPairs.
MRC_API const int * MR_MultiwayICPSamplingParameters_Get_maxGroupSize(const MR_MultiwayICPSamplingParameters *_this)
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:27
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