MeshLib C Docs
Loading...
Searching...
No Matches
MRICP.h
Go to the documentation of this file.
1#pragma once
2
5#include <MRCMesh/MRId.h>
6#include <MRCMesh/MRVector3.h>
7#include <MRCMisc/common.h>
8#include <MRCMisc/exports.h>
9
10#include <stdbool.h>
11#include <stddef.h>
12
13#ifdef __cplusplus
14extern "C" {
15#endif
16
17typedef struct MR_BitSet MR_BitSet; // Defined in `#include <MRCMesh/MRBitSet.h>`.
18typedef struct MR_ICPGroupPair MR_ICPGroupPair; // Defined in `#include <MRCMesh/MRMultiwayICP.h>`.
19typedef struct MR_ICPGroupPairs MR_ICPGroupPairs; // Defined in `#include <MRCMesh/MRMultiwayICP.h>`.
20typedef struct MR_MeshOrPoints MR_MeshOrPoints; // Defined in `#include <MRCMesh/MRMeshOrPoints.h>`.
21typedef struct MR_MeshOrPointsXf MR_MeshOrPointsXf; // Defined in `#include <MRCMesh/MRMeshOrPoints.h>`.
22typedef struct MR_PointToPlaneAligningTransform MR_PointToPlaneAligningTransform; // Defined in `#include <MRCMesh/MRPointToPlaneAligningTransform.h>`.
23typedef struct MR_VertBitSet MR_VertBitSet; // Defined in `#include <MRCMesh/MRBitSet.h>`.
24typedef struct MR_std_string MR_std_string; // Defined in `#include <MRCMisc/std_string.h>`.
25typedef struct MR_std_vector_MR_PointPair MR_std_vector_MR_PointPair; // Defined in `#include <MRCMisc/std_vector_MR_PointPair.h>`.
26
27
35
43
51
58
61typedef struct MR_NumSum MR_NumSum;
62
67
73typedef struct MR_ICP MR_ICP;
74
81
88
95
102
109
116
123
130
137
144
151
158
164MRC_API const float *MR_ICPPairData_Get_distSq(const MR_ICPPairData *_this);
165
170MRC_API void MR_ICPPairData_Set_distSq(MR_ICPPairData *_this, float value);
171
178
184MRC_API const float *MR_ICPPairData_Get_weight(const MR_ICPPairData *_this);
185
190MRC_API void MR_ICPPairData_Set_weight(MR_ICPPairData *_this, float value);
191
198
202
207
215MRC_API MR_ICPPairData *MR_ICPPairData_ConstructFrom(MR_Vector3f srcPoint, MR_Vector3f srcNorm, MR_Vector3f tgtPoint, MR_Vector3f tgtNorm, float distSq, float weight);
216
219MRC_API const MR_ICPPairData *MR_ICPPairData_OffsetPtr(const MR_ICPPairData *ptr, ptrdiff_t i);
220
224
230
235
241
246
252
254MRC_API void MR_ICPPairData_Destroy(const MR_ICPPairData *_this);
255
258
266
270MRC_API bool MR_equal_MR_ICPPairData(const MR_ICPPairData *_1, const MR_ICPPairData *_2);
271
278
285
292
300
308
316
322MRC_API const float *MR_PointPair_Get_normalsAngleCos(const MR_PointPair *_this);
323
328MRC_API void MR_PointPair_Set_normalsAngleCos(MR_PointPair *_this, float value);
329
336
342MRC_API const bool *MR_PointPair_Get_tgtOnBd(const MR_PointPair *_this);
343
348MRC_API void MR_PointPair_Set_tgtOnBd(MR_PointPair *_this, bool value);
349
356
363
370
377
384
391
398
405
412
419
426
433
440
446MRC_API const float *MR_PointPair_Get_distSq(const MR_PointPair *_this);
447
452MRC_API void MR_PointPair_Set_distSq(MR_PointPair *_this, float value);
453
460
466MRC_API const float *MR_PointPair_Get_weight(const MR_PointPair *_this);
467
472MRC_API void MR_PointPair_Set_weight(MR_PointPair *_this, float value);
473
480
484
489
492MRC_API const MR_PointPair *MR_PointPair_OffsetPtr(const MR_PointPair *ptr, ptrdiff_t i);
493
497
502
506
512
514MRC_API void MR_PointPair_Destroy(const MR_PointPair *_this);
515
517MRC_API void MR_PointPair_DestroyArray(const MR_PointPair *_this);
518
526
530MRC_API bool MR_equal_MR_PointPair(const MR_PointPair *_1, const MR_PointPair *_2);
531
538
544MRC_API void MR_IPointPairs_Set_active(MR_IPointPairs *_this, MR_PassBy value_pass_by, MR_BitSet *value);
545
552
554MRC_API void MR_IPointPairs_Destroy(const MR_IPointPairs *_this);
555
558
562MRC_API const MR_ICPPairData *MR_IPointPairs_index(const MR_IPointPairs *_this, MR_uint64_t _1);
563
568
571MRC_API MR_uint64_t MR_IPointPairs_size(const MR_IPointPairs *_this);
572
575MRC_API const MR_IPointPairs *MR_IPointPairs_OffsetPtr(const MR_IPointPairs *ptr, ptrdiff_t i);
576
580
586
591
597
602
610
617
623
628
634
639
647
654
661
667MRC_API void MR_PointPairs_Set_vec(MR_PointPairs *_this, MR_PassBy value_pass_by, MR_std_vector_MR_PointPair *value);
668
675
682
688MRC_API void MR_PointPairs_Set_active(MR_PointPairs *_this, MR_PassBy value_pass_by, MR_BitSet *value);
689
696
700
705
708MRC_API const MR_PointPairs *MR_PointPairs_OffsetPtr(const MR_PointPairs *ptr, ptrdiff_t i);
709
713
718
722
726MRC_API MR_PointPairs *MR_PointPairs_ConstructFromAnother(MR_PassBy _other_pass_by, MR_PointPairs *_other);
727
729MRC_API void MR_PointPairs_Destroy(const MR_PointPairs *_this);
730
732MRC_API void MR_PointPairs_DestroyArray(const MR_PointPairs *_this);
733
739MRC_API MR_PointPairs *MR_PointPairs_AssignFromAnother(MR_PointPairs *_this, MR_PassBy _other_pass_by, MR_PointPairs *_other);
740
744MRC_API const MR_ICPPairData *MR_PointPairs_index(const MR_PointPairs *_this, MR_uint64_t idx);
745
749MRC_API MR_ICPPairData *MR_PointPairs_index_mut(MR_PointPairs *_this, MR_uint64_t idx);
750
753MRC_API MR_uint64_t MR_PointPairs_size(const MR_PointPairs *_this);
754
758MRC_API MR_uint64_t MR_getNumSamples(const MR_IPointPairs *pairs);
759
763MRC_API MR_uint64_t MR_getNumActivePairs(const MR_IPointPairs *pairs);
764
769MRC_API const int *MR_NumSum_Get_num(const MR_NumSum *_this);
770
774MRC_API void MR_NumSum_Set_num(MR_NumSum *_this, int value);
775
781
786MRC_API const double *MR_NumSum_Get_sum(const MR_NumSum *_this);
787
791MRC_API void MR_NumSum_Set_sum(MR_NumSum *_this, double value);
792
797MRC_API double *MR_NumSum_GetMutable_sum(MR_NumSum *_this);
798
802
807
811MRC_API MR_NumSum *MR_NumSum_ConstructFrom(int num, double sum);
812
815MRC_API const MR_NumSum *MR_NumSum_OffsetPtr(const MR_NumSum *ptr, ptrdiff_t i);
816
820
826
828MRC_API void MR_NumSum_Destroy(const MR_NumSum *_this);
829
831MRC_API void MR_NumSum_DestroyArray(const MR_NumSum *_this);
832
840
843MRC_API float MR_NumSum_rootMeanSqF(const MR_NumSum *_this);
844
849MRC_API MR_NumSum *MR_add_MR_NumSum(const MR_NumSum *a, const MR_NumSum *b);
850
858MRC_API MR_NumSum *MR_getSumSqDistToPoint(const MR_IPointPairs *pairs, const double *inaccuracy);
859
867MRC_API MR_NumSum *MR_getSumSqDistToPlane(const MR_IPointPairs *pairs, const double *inaccuracy);
868
872MRC_API float MR_getMeanSqDistToPoint(const MR_IPointPairs *pairs);
873
877MRC_API float MR_getMeanSqDistToPlane(const MR_IPointPairs *pairs);
878
882MRC_API MR_std_string *MR_getICPStatusInfo(int iterations, MR_ICPExitType exitType);
883
888MRC_API MR_AffineXf3d MR_getAligningXf(const MR_PointToPlaneAligningTransform *p2pl, MR_ICPMode mode, float angleLimit, float scaleLimit, const MR_Vector3f *fixedRotationAxis);
889
896
903
910
911// [radians]
916MRC_API const float *MR_ICPProperties_Get_p2plAngleLimit(const MR_ICPProperties *_this);
917
918// [radians]
923
924// [radians]
930
937MRC_API const float *MR_ICPProperties_Get_p2plScaleLimit(const MR_ICPProperties *_this);
938
945
953
954// in [-1,1]
959MRC_API const float *MR_ICPProperties_Get_cosThreshold(const MR_ICPProperties *_this);
960
961// in [-1,1]
965MRC_API void MR_ICPProperties_Set_cosThreshold(MR_ICPProperties *_this, float value);
966
967// in [-1,1]
973
974// [distance^2]
980
981// [distance^2]
986
987// [distance^2]
993
994// dimensionless
999MRC_API const float *MR_ICPProperties_Get_farDistFactor(const MR_ICPProperties *_this);
1000
1001// dimensionless
1006
1007// dimensionless
1013
1021
1029
1037
1044
1051
1058
1065MRC_API const int *MR_ICPProperties_Get_iterLimit(const MR_ICPProperties *_this);
1066
1072MRC_API void MR_ICPProperties_Set_iterLimit(MR_ICPProperties *_this, int value);
1073
1081
1089
1096
1104
1105// [distance]
1110MRC_API const float *MR_ICPProperties_Get_exitVal(const MR_ICPProperties *_this);
1111
1112// [distance]
1116MRC_API void MR_ICPProperties_Set_exitVal(MR_ICPProperties *_this, float value);
1117
1118// [distance]
1124
1132
1139
1147
1151
1156
1163MRC_API MR_ICPProperties *MR_ICPProperties_ConstructFrom(MR_ICPMethod method, float p2plAngleLimit, float p2plScaleLimit, float cosThreshold, float distThresholdSq, float farDistFactor, MR_ICPMode icpMode, MR_Vector3f fixedRotationAxis, int iterLimit, int badIterStopCount, float exitVal, bool mutualClosest);
1164
1167MRC_API const MR_ICPProperties *MR_ICPProperties_OffsetPtr(const MR_ICPProperties *ptr, ptrdiff_t i);
1168
1172
1178
1181
1184
1192
1196MRC_API MR_uint64_t MR_deactivateFarPairs(MR_IPointPairs *pairs, float maxDistSq);
1197
1203MRC_API void MR_updatePointPairs(MR_PointPairs *pairs, const MR_MeshOrPointsXf *src, const MR_MeshOrPointsXf *tgt, float cosThreshold, float distThresholdSq, bool mutualClosest);
1204
1208MRC_API MR_ICP *MR_ICP_ConstructFromAnother(MR_PassBy _other_pass_by, MR_ICP *_other);
1209
1212MRC_API const MR_ICP *MR_ICP_OffsetPtr(const MR_ICP *ptr, ptrdiff_t i);
1213
1216MRC_API MR_ICP *MR_ICP_OffsetMutablePtr(MR_ICP *ptr, ptrdiff_t i);
1217
1241MRC_API MR_ICP *MR_ICP_Construct_6(const MR_MeshOrPoints *flt, const MR_MeshOrPoints *ref, const MR_AffineXf3f *fltXf, const MR_AffineXf3f *refXf, const MR_VertBitSet *fltSamples, const MR_VertBitSet *refSamples);
1242
1255MRC_API MR_ICP *MR_ICP_Construct_4(const MR_MeshOrPointsXf *flt, const MR_MeshOrPointsXf *ref, const MR_VertBitSet *fltSamples, const MR_VertBitSet *refSamples);
1256
1273MRC_API MR_ICP *MR_ICP_Construct_5(const MR_MeshOrPoints *flt, const MR_MeshOrPoints *ref, const MR_AffineXf3f *fltXf, const MR_AffineXf3f *refXf, float samplingVoxelSize);
1274
1281MRC_API MR_ICP *MR_ICP_Construct_3(const MR_MeshOrPointsXf *flt, const MR_MeshOrPointsXf *ref, float samplingVoxelSize);
1282
1284MRC_API void MR_ICP_Destroy(const MR_ICP *_this);
1285
1287MRC_API void MR_ICP_DestroyArray(const MR_ICP *_this);
1288
1294MRC_API MR_ICP *MR_ICP_AssignFromAnother(MR_ICP *_this, MR_PassBy _other_pass_by, MR_ICP *_other);
1295
1300MRC_API void MR_ICP_setParams(MR_ICP *_this, const MR_ICPProperties *prop);
1301
1304MRC_API void MR_ICP_setCosineLimit(MR_ICP *_this, float cos);
1305
1308MRC_API void MR_ICP_setDistanceLimit(MR_ICP *_this, float dist);
1309
1312MRC_API void MR_ICP_setBadIterCount(MR_ICP *_this, int iter);
1313
1316MRC_API void MR_ICP_setFarDistFactor(MR_ICP *_this, float factor);
1317
1322MRC_API void MR_ICP_setFltSamples(MR_ICP *_this, const MR_VertBitSet *fltSamples);
1323
1326MRC_API void MR_ICP_sampleFltPoints(MR_ICP *_this, float samplingVoxelSize);
1327
1332MRC_API void MR_ICP_setRefSamples(MR_ICP *_this, const MR_VertBitSet *refSamples);
1333
1336MRC_API void MR_ICP_sampleRefPoints(MR_ICP *_this, float samplingVoxelSize);
1337
1341MRC_API void MR_ICP_samplePoints(MR_ICP *_this, float samplingVoxelSize);
1342
1348MRC_API void MR_ICP_setXfs(MR_ICP *_this, const MR_AffineXf3f *fltXf, const MR_AffineXf3f *refXf);
1349
1354MRC_API void MR_ICP_setFloatXf(MR_ICP *_this, const MR_AffineXf3f *fltXf);
1355
1362
1366MRC_API void MR_ICP_updatePointPairs(MR_ICP *_this);
1367
1371MRC_API const MR_ICPProperties *MR_ICP_getParams(const MR_ICP *_this);
1372
1377
1381MRC_API MR_uint64_t MR_ICP_getNumSamples(const MR_ICP *_this);
1382
1386MRC_API MR_uint64_t MR_ICP_getNumActivePairs(const MR_ICP *_this);
1387
1391MRC_API float MR_ICP_getMeanSqDistToPoint(const MR_ICP *_this);
1392
1396MRC_API float MR_ICP_getMeanSqDistToPlane(const MR_ICP *_this);
1397
1402MRC_API const MR_PointPairs *MR_ICP_getFlt2RefPairs(const MR_ICP *_this);
1403
1408MRC_API const MR_PointPairs *MR_ICP_getRef2FltPairs(const MR_ICP *_this);
1409
1415
1416#ifdef __cplusplus
1417} // extern "C"
1418#endif
struct MR_MeshOrPoints MR_MeshOrPoints
Definition MRAABBTreeObjects.h:18
struct MR_VertBitSet MR_VertBitSet
Definition MRAABBTree.h:22
struct MR_BitSet MR_BitSet
Definition MRBitSet.h:220
struct MR_std_string MR_std_string
Definition MRCtm.h:32
MR_ICPMethod
The method how to update transformation from point pairs.
Definition MRICPEnums.h:10
MR_ICPMode
The group of transformations, each with its own degrees of freedom.
Definition MRICPEnums.h:27
MR_ICPExitType
Definition MRICPEnums.h:42
MRC_API void MR_PointPair_DestroyArray(const MR_PointPair *_this)
Destroys a heap-allocated array of MR_PointPair. Does nothing if the pointer is null.
MRC_API MR_IPointPairs * MR_PointPairs_MutableUpcastTo_MR_IPointPairs(MR_PointPairs *object)
MRC_API const MR_NumSum * MR_NumSum_OffsetPtr(const MR_NumSum *ptr, ptrdiff_t i)
MRC_API MR_ICPPairData * MR_ICPPairData_DefaultConstructArray(size_t num_elems)
MRC_API void MR_ICPProperties_Set_distThresholdSq(MR_ICPProperties *_this, float value)
MRC_API void MR_ICPPairData_Set_srcNorm(MR_ICPPairData *_this, MR_Vector3f value)
MRC_API void MR_PointPair_Set_weight(MR_PointPair *_this, float value)
MRC_API MR_PointPair * MR_PointPair_AssignFromAnother(MR_PointPair *_this, const MR_PointPair *_other)
MRC_API MR_Vector3f * MR_ICPPairData_GetMutable_srcNorm(MR_ICPPairData *_this)
MRC_API MR_uint64_t MR_getNumSamples(const MR_IPointPairs *pairs)
MRC_API const int * MR_ICPProperties_Get_badIterStopCount(const MR_ICPProperties *_this)
MRC_API MR_ICP * MR_ICP_Construct_5(const MR_MeshOrPoints *flt, const MR_MeshOrPoints *ref, const MR_AffineXf3f *fltXf, const MR_AffineXf3f *refXf, float samplingVoxelSize)
MRC_API MR_ICPGroupPair * MR_ICPPairData_MutableStaticDowncastTo_MR_ICPGroupPair(MR_ICPPairData *object)
MRC_API const MR_Vector3f * MR_PointPair_Get_srcPoint(const MR_PointPair *_this)
MRC_API const MR_PointPair * MR_ICPPairData_StaticDowncastTo_MR_PointPair(const MR_ICPPairData *object)
MRC_API const MR_PointPairs * MR_PointPairs_OffsetPtr(const MR_PointPairs *ptr, ptrdiff_t i)
MRC_API void MR_updatePointPairs(MR_PointPairs *pairs, const MR_MeshOrPointsXf *src, const MR_MeshOrPointsXf *tgt, float cosThreshold, float distThresholdSq, bool mutualClosest)
MRC_API float MR_getMeanSqDistToPoint(const MR_IPointPairs *pairs)
MRC_API const MR_ICPMethod * MR_ICPProperties_Get_method(const MR_ICPProperties *_this)
struct MR_ICPGroupPairs MR_ICPGroupPairs
Definition MRICP.h:19
MRC_API void MR_ICP_setXfs(MR_ICP *_this, const MR_AffineXf3f *fltXf, const MR_AffineXf3f *refXf)
MRC_API const MR_Vector3f * MR_PointPair_Get_tgtNorm(const MR_PointPair *_this)
MRC_API void MR_ICPPairData_Set_tgtPoint(MR_ICPPairData *_this, MR_Vector3f value)
MRC_API const float * MR_ICPProperties_Get_exitVal(const MR_ICPProperties *_this)
MRC_API const MR_Vector3f * MR_ICPPairData_Get_tgtNorm(const MR_ICPPairData *_this)
MRC_API const MR_Vector3f * MR_ICPPairData_Get_tgtPoint(const MR_ICPPairData *_this)
MRC_API void MR_ICP_setFarDistFactor(MR_ICP *_this, float factor)
MRC_API void MR_IPointPairs_DestroyArray(const MR_IPointPairs *_this)
Destroys a heap-allocated array of MR_IPointPairs. Does nothing if the pointer is null.
MRC_API MR_ICPPairData * MR_ICPPairData_DefaultConstruct(void)
MRC_API void MR_ICPProperties_Set_farDistFactor(MR_ICPProperties *_this, float value)
MRC_API void MR_PointPair_Set_srcNorm(MR_PointPair *_this, MR_Vector3f value)
MRC_API void MR_PointPair_Set_distSq(MR_PointPair *_this, float value)
MRC_API const MR_ICPProperties * MR_ICPProperties_OffsetPtr(const MR_ICPProperties *ptr, ptrdiff_t i)
MRC_API void MR_PointPair_Set_srcVertId(MR_PointPair *_this, MR_VertId value)
MRC_API void MR_ICPPairData_Set_weight(MR_ICPPairData *_this, float value)
MRC_API void MR_PointPairs_Destroy(const MR_PointPairs *_this)
Destroys a heap-allocated instance of MR_PointPairs. Does nothing if the pointer is null.
MRC_API MR_NumSum * MR_NumSum_AssignFromAnother(MR_NumSum *_this, const MR_NumSum *_other)
MRC_API void MR_IPointPairs_Set_active(MR_IPointPairs *_this, MR_PassBy value_pass_by, MR_BitSet *value)
MRC_API void MR_PointPair_Set_tgtPoint(MR_PointPair *_this, MR_Vector3f value)
MRC_API const float * MR_PointPair_Get_normalsAngleCos(const MR_PointPair *_this)
MRC_API MR_ICP * MR_ICP_AssignFromAnother(MR_ICP *_this, MR_PassBy _other_pass_by, MR_ICP *_other)
MRC_API MR_uint64_t MR_PointPairs_size(const MR_PointPairs *_this)
MRC_API void MR_ICPPairData_Destroy(const MR_ICPPairData *_this)
Destroys a heap-allocated instance of MR_ICPPairData. Does nothing if the pointer is null.
MRC_API const double * MR_NumSum_Get_sum(const MR_NumSum *_this)
MRC_API float * MR_ICPProperties_GetMutable_p2plAngleLimit(MR_ICPProperties *_this)
MRC_API MR_Vector3f * MR_ICPPairData_GetMutable_srcPoint(MR_ICPPairData *_this)
MRC_API int * MR_NumSum_GetMutable_num(MR_NumSum *_this)
MRC_API void MR_ICPProperties_Set_p2plAngleLimit(MR_ICPProperties *_this, float value)
MRC_API MR_PointPair * MR_PointPair_DefaultConstruct(void)
MRC_API void MR_PointPairs_Set_vec(MR_PointPairs *_this, MR_PassBy value_pass_by, MR_std_vector_MR_PointPair *value)
MRC_API const MR_ICPMode * MR_ICPProperties_Get_icpMode(const MR_ICPProperties *_this)
MRC_API const MR_ICPPairData * MR_IPointPairs_index(const MR_IPointPairs *_this, MR_uint64_t _1)
MRC_API MR_BitSet * MR_IPointPairs_GetMutable_active(MR_IPointPairs *_this)
MRC_API MR_PointPairs * MR_PointPairs_ConstructFromAnother(MR_PassBy _other_pass_by, MR_PointPairs *_other)
MRC_API MR_uint64_t MR_ICP_getNumActivePairs(const MR_ICP *_this)
MRC_API const bool * MR_PointPair_Get_tgtOnBd(const MR_PointPair *_this)
MRC_API MR_NumSum * MR_NumSum_ConstructFrom(int num, double sum)
MRC_API const float * MR_ICPPairData_Get_weight(const MR_ICPPairData *_this)
MRC_API void MR_ICPPairData_Set_tgtNorm(MR_ICPPairData *_this, MR_Vector3f value)
MRC_API MR_PointPair * MR_PointPair_ConstructFromAnother(const MR_PointPair *_other)
MRC_API void MR_ICP_updatePointPairs(MR_ICP *_this)
MRC_API const float * MR_PointPair_Get_weight(const MR_PointPair *_this)
MRC_API MR_uint64_t MR_deactivateFarPairs(MR_IPointPairs *pairs, float maxDistSq)
MRC_API MR_uint64_t MR_IPointPairs_size(const MR_IPointPairs *_this)
MRC_API MR_NumSum * MR_NumSum_OffsetMutablePtr(MR_NumSum *ptr, ptrdiff_t i)
MRC_API float * MR_ICPProperties_GetMutable_cosThreshold(MR_ICPProperties *_this)
MRC_API MR_PointPair * MR_PointPair_OffsetMutablePtr(MR_PointPair *ptr, ptrdiff_t i)
MRC_API const MR_ICPGroupPairs * MR_IPointPairs_DynamicDowncastToOrFail_MR_ICPGroupPairs(const MR_IPointPairs *object)
MRC_API const MR_IPointPairs * MR_PointPairs_UpcastTo_MR_IPointPairs(const MR_PointPairs *object)
MRC_API void MR_ICPProperties_Set_exitVal(MR_ICPProperties *_this, float value)
MRC_API const MR_ICP * MR_ICP_OffsetPtr(const MR_ICP *ptr, ptrdiff_t i)
MRC_API float MR_ICP_getMeanSqDistToPlane(const MR_ICP *_this)
MRC_API const MR_Vector3f * MR_ICPPairData_Get_srcNorm(const MR_ICPPairData *_this)
MRC_API MR_IPointPairs * MR_IPointPairs_OffsetMutablePtr(MR_IPointPairs *ptr, ptrdiff_t i)
MRC_API MR_NumSum * MR_getSumSqDistToPlane(const MR_IPointPairs *pairs, const double *inaccuracy)
MRC_API MR_Vector3f * MR_ICPPairData_GetMutable_tgtPoint(MR_ICPPairData *_this)
MRC_API MR_ICPMode * MR_ICPProperties_GetMutable_icpMode(MR_ICPProperties *_this)
MRC_API const MR_IPointPairs * MR_IPointPairs_OffsetPtr(const MR_IPointPairs *ptr, ptrdiff_t i)
MRC_API float MR_NumSum_rootMeanSqF(const MR_NumSum *_this)
MRC_API const MR_PointPair * MR_PointPair_OffsetPtr(const MR_PointPair *ptr, ptrdiff_t i)
MRC_API MR_Vector3f * MR_PointPair_GetMutable_srcNorm(MR_PointPair *_this)
MRC_API MR_std_string * MR_ICP_getStatusInfo(const MR_ICP *_this)
MRC_API const int * MR_ICPProperties_Get_iterLimit(const MR_ICPProperties *_this)
MRC_API const MR_Vector3f * MR_PointPair_Get_srcNorm(const MR_PointPair *_this)
MRC_API void MR_PointPairs_DestroyArray(const MR_PointPairs *_this)
Destroys a heap-allocated array of MR_PointPairs. Does nothing if the pointer is null.
MRC_API MR_PointPairs * MR_IPointPairs_MutableStaticDowncastTo_MR_PointPairs(MR_IPointPairs *object)
MRC_API void MR_PointPair_Set_tgtCloseVert(MR_PointPair *_this, MR_VertId value)
MRC_API const float * MR_ICPProperties_Get_farDistFactor(const MR_ICPProperties *_this)
MRC_API MR_NumSum * MR_getSumSqDistToPoint(const MR_IPointPairs *pairs, const double *inaccuracy)
MRC_API const MR_ICPGroupPair * MR_ICPPairData_StaticDowncastTo_MR_ICPGroupPair(const MR_ICPPairData *object)
MRC_API MR_Vector3f * MR_PointPair_GetMutable_tgtNorm(MR_PointPair *_this)
MRC_API float * MR_ICPPairData_GetMutable_distSq(MR_ICPPairData *_this)
MRC_API const float * MR_ICPProperties_Get_distThresholdSq(const MR_ICPProperties *_this)
MRC_API MR_ICP * MR_ICP_Construct_4(const MR_MeshOrPointsXf *flt, const MR_MeshOrPointsXf *ref, const MR_VertBitSet *fltSamples, const MR_VertBitSet *refSamples)
MRC_API float MR_ICP_getMeanSqDistToPoint(const MR_ICP *_this)
MRC_API MR_ICPMethod * MR_ICPProperties_GetMutable_method(MR_ICPProperties *_this)
MRC_API const float * MR_ICPProperties_Get_p2plAngleLimit(const MR_ICPProperties *_this)
MRC_API void MR_ICPProperties_Set_icpMode(MR_ICPProperties *_this, MR_ICPMode value)
MRC_API const MR_PointPairs * MR_ICP_getRef2FltPairs(const MR_ICP *_this)
MRC_API float * MR_PointPair_GetMutable_distSq(MR_PointPair *_this)
MRC_API void MR_NumSum_Set_num(MR_NumSum *_this, int value)
MRC_API const MR_Vector3f * MR_PointPair_Get_tgtPoint(const MR_PointPair *_this)
MRC_API MR_ICPGroupPairs * MR_IPointPairs_MutableDynamicDowncastTo_MR_ICPGroupPairs(MR_IPointPairs *object)
MRC_API MR_std_string * MR_getICPStatusInfo(int iterations, MR_ICPExitType exitType)
struct MR_PointToPlaneAligningTransform MR_PointToPlaneAligningTransform
Definition MRICP.h:22
struct MR_ICP MR_ICP
Definition MRICP.h:73
MRC_API const MR_Vector3f * MR_ICPPairData_Get_srcPoint(const MR_ICPPairData *_this)
MRC_API const MR_VertId * MR_PointPair_Get_srcVertId(const MR_PointPair *_this)
MRC_API void MR_ICP_sampleRefPoints(MR_ICP *_this, float samplingVoxelSize)
MRC_API void MR_ICP_setFltSamples(MR_ICP *_this, const MR_VertBitSet *fltSamples)
MRC_API void MR_ICP_setBadIterCount(MR_ICP *_this, int iter)
MRC_API MR_ICPProperties * MR_ICPProperties_DefaultConstruct(void)
MRC_API void MR_ICP_Destroy(const MR_ICP *_this)
Destroys a heap-allocated instance of MR_ICP. Does nothing if the pointer is null.
MRC_API void MR_ICP_setFloatXf(MR_ICP *_this, const MR_AffineXf3f *fltXf)
MRC_API MR_uint64_t MR_getNumActivePairs(const MR_IPointPairs *pairs)
MRC_API float * MR_PointPair_GetMutable_normalsAngleCos(MR_PointPair *_this)
MRC_API MR_ICP * MR_ICP_Construct_3(const MR_MeshOrPointsXf *flt, const MR_MeshOrPointsXf *ref, float samplingVoxelSize)
MRC_API void MR_ICPProperties_Set_mutualClosest(MR_ICPProperties *_this, bool value)
MRC_API MR_NumSum * MR_NumSum_ConstructFromAnother(const MR_NumSum *_other)
MRC_API MR_VertId * MR_PointPair_GetMutable_srcVertId(MR_PointPair *_this)
MRC_API void MR_ICPProperties_Set_iterLimit(MR_ICPProperties *_this, int value)
MRC_API MR_ICPProperties * MR_ICPProperties_DefaultConstructArray(size_t num_elems)
MRC_API void MR_ICPProperties_Destroy(const MR_ICPProperties *_this)
Destroys a heap-allocated instance of MR_ICPProperties. Does nothing if the pointer is null.
MRC_API const MR_PointPairs * MR_IPointPairs_StaticDowncastTo_MR_PointPairs(const MR_IPointPairs *object)
MRC_API float * MR_PointPair_GetMutable_weight(MR_PointPair *_this)
MRC_API const float * MR_ICPProperties_Get_cosThreshold(const MR_ICPProperties *_this)
MRC_API void MR_ICPPairData_Set_srcPoint(MR_ICPPairData *_this, MR_Vector3f value)
MRC_API float * MR_ICPPairData_GetMutable_weight(MR_ICPPairData *_this)
MRC_API void MR_ICPProperties_Set_fixedRotationAxis(MR_ICPProperties *_this, MR_Vector3f value)
MRC_API void MR_ICP_samplePoints(MR_ICP *_this, float samplingVoxelSize)
MRC_API MR_Vector3f * MR_PointPair_GetMutable_tgtPoint(MR_PointPair *_this)
MRC_API MR_ICPPairData * MR_PointPairs_index_mut(MR_PointPairs *_this, MR_uint64_t idx)
MRC_API void MR_ICP_setCosineLimit(MR_ICP *_this, float cos)
MRC_API MR_PointPairs * MR_PointPairs_DefaultConstruct(void)
MRC_API MR_Vector3f * MR_ICPPairData_GetMutable_tgtNorm(MR_ICPPairData *_this)
MRC_API void MR_ICPProperties_Set_badIterStopCount(MR_ICPProperties *_this, int value)
MRC_API void MR_ICP_setParams(MR_ICP *_this, const MR_ICPProperties *prop)
MRC_API const MR_BitSet * MR_IPointPairs_Get_active(const MR_IPointPairs *_this)
MRC_API MR_AffineXf3f MR_ICP_calculateTransformation(MR_ICP *_this)
MRC_API void MR_PointPair_Destroy(const MR_PointPair *_this)
Destroys a heap-allocated instance of MR_PointPair. Does nothing if the pointer is null.
MRC_API MR_ICPPairData * MR_ICPPairData_OffsetMutablePtr(MR_ICPPairData *ptr, ptrdiff_t i)
MRC_API void MR_ICPProperties_Set_p2plScaleLimit(MR_ICPProperties *_this, float value)
MRC_API float * MR_ICPProperties_GetMutable_exitVal(MR_ICPProperties *_this)
MRC_API const float * MR_ICPProperties_Get_p2plScaleLimit(const MR_ICPProperties *_this)
struct MR_ICPGroupPair MR_ICPGroupPair
Definition MRICP.h:18
MRC_API void MR_ICPPairData_Set_distSq(MR_ICPPairData *_this, float value)
struct MR_PointPair MR_PointPair
Definition MRICP.h:42
MRC_API bool * MR_PointPair_GetMutable_tgtOnBd(MR_PointPair *_this)
MRC_API MR_PointPair * MR_PointPair_DefaultConstructArray(size_t num_elems)
MRC_API MR_PointPairs * MR_PointPairs_DefaultConstructArray(size_t num_elems)
MRC_API const MR_ICPProperties * MR_ICP_getParams(const MR_ICP *_this)
MRC_API void MR_PointPair_Set_srcPoint(MR_PointPair *_this, MR_Vector3f value)
struct MR_std_vector_MR_PointPair MR_std_vector_MR_PointPair
Definition MRICP.h:25
struct MR_ICPPairData MR_ICPPairData
Definition MRICP.h:34
MRC_API const MR_VertId * MR_PointPair_Get_tgtCloseVert(const MR_PointPair *_this)
MRC_API MR_NumSum * MR_add_MR_NumSum(const MR_NumSum *a, const MR_NumSum *b)
MRC_API MR_NumSum * MR_NumSum_DefaultConstruct(void)
MRC_API void MR_ICP_setRefSamples(MR_ICP *_this, const MR_VertBitSet *refSamples)
MRC_API const MR_BitSet * MR_PointPairs_Get_active(const MR_PointPairs *_this)
MRC_API void MR_ICPPairData_DestroyArray(const MR_ICPPairData *_this)
Destroys a heap-allocated array of MR_ICPPairData. Does nothing if the pointer is null.
MRC_API MR_ICPProperties * MR_ICPProperties_AssignFromAnother(MR_ICPProperties *_this, const MR_ICPProperties *_other)
MRC_API void MR_ICP_sampleFltPoints(MR_ICP *_this, float samplingVoxelSize)
MRC_API const int * MR_NumSum_Get_num(const MR_NumSum *_this)
MRC_API void MR_PointPair_Set_tgtOnBd(MR_PointPair *_this, bool value)
MRC_API MR_PointPair * MR_ICPPairData_MutableStaticDowncastTo_MR_PointPair(MR_ICPPairData *object)
MRC_API void MR_PointPairs_Set_active(MR_PointPairs *_this, MR_PassBy value_pass_by, MR_BitSet *value)
MRC_API int * MR_ICPProperties_GetMutable_iterLimit(MR_ICPProperties *_this)
MRC_API MR_NumSum * MR_NumSum_DefaultConstructArray(size_t num_elems)
MRC_API MR_PointPairs * MR_PointPairs_OffsetMutablePtr(MR_PointPairs *ptr, ptrdiff_t i)
MRC_API const MR_ICPPairData * MR_PointPairs_index(const MR_PointPairs *_this, MR_uint64_t idx)
MRC_API const MR_ICPPairData * MR_PointPair_UpcastTo_MR_ICPPairData(const MR_PointPair *object)
MRC_API void MR_ICPProperties_DestroyArray(const MR_ICPProperties *_this)
Destroys a heap-allocated array of MR_ICPProperties. Does nothing if the pointer is null.
MRC_API MR_uint64_t MR_ICP_getNumSamples(const MR_ICP *_this)
MRC_API MR_ICPPairData * MR_ICPPairData_ConstructFrom(MR_Vector3f srcPoint, MR_Vector3f srcNorm, MR_Vector3f tgtPoint, MR_Vector3f tgtNorm, float distSq, float weight)
MRC_API MR_ICPPairData * MR_ICPPairData_AssignFromAnother(MR_ICPPairData *_this, const MR_ICPPairData *_other)
MRC_API const MR_PointPairs * MR_IPointPairs_DynamicDowncastToOrFail_MR_PointPairs(const MR_IPointPairs *object)
MRC_API MR_Vector3f * MR_PointPair_GetMutable_srcPoint(MR_PointPair *_this)
MRC_API const MR_ICPGroupPairs * MR_IPointPairs_StaticDowncastTo_MR_ICPGroupPairs(const MR_IPointPairs *object)
MRC_API MR_ICPGroupPairs * MR_IPointPairs_MutableStaticDowncastTo_MR_ICPGroupPairs(MR_IPointPairs *object)
struct MR_NumSum MR_NumSum
Definition MRICP.h:61
struct MR_PointPairs MR_PointPairs
Definition MRICP.h:57
struct MR_MeshOrPointsXf MR_MeshOrPointsXf
Definition MRICP.h:21
MRC_API void MR_NumSum_DestroyArray(const MR_NumSum *_this)
Destroys a heap-allocated array of MR_NumSum. Does nothing if the pointer is null.
MRC_API MR_BitSet * MR_PointPairs_GetMutable_active(MR_PointPairs *_this)
MRC_API MR_PointPairs * MR_IPointPairs_MutableDynamicDowncastToOrFail_MR_PointPairs(MR_IPointPairs *object)
MRC_API MR_ICPProperties * MR_ICPProperties_ConstructFromAnother(const MR_ICPProperties *_other)
MRC_API const MR_PointPairs * MR_ICP_getFlt2RefPairs(const MR_ICP *_this)
MRC_API void MR_NumSum_Set_sum(MR_NumSum *_this, double value)
MRC_API MR_ICPPairData * MR_PointPair_MutableUpcastTo_MR_ICPPairData(MR_PointPair *object)
MRC_API MR_ICPProperties * MR_ICPProperties_ConstructFrom(MR_ICPMethod method, float p2plAngleLimit, float p2plScaleLimit, float cosThreshold, float distThresholdSq, float farDistFactor, MR_ICPMode icpMode, MR_Vector3f fixedRotationAxis, int iterLimit, int badIterStopCount, float exitVal, bool mutualClosest)
MRC_API float * MR_ICPProperties_GetMutable_p2plScaleLimit(MR_ICPProperties *_this)
MRC_API MR_Vector3f * MR_ICPProperties_GetMutable_fixedRotationAxis(MR_ICPProperties *_this)
MRC_API MR_ICPPairData * MR_IPointPairs_index_mut(MR_IPointPairs *_this, MR_uint64_t _1)
MRC_API MR_ICPProperties * MR_ICPProperties_OffsetMutablePtr(MR_ICPProperties *ptr, ptrdiff_t i)
MRC_API const MR_PointPairs * MR_IPointPairs_DynamicDowncastTo_MR_PointPairs(const MR_IPointPairs *object)
MRC_API const MR_std_vector_MR_PointPair * MR_PointPairs_Get_vec(const MR_PointPairs *_this)
MRC_API void MR_PointPair_Set_normalsAngleCos(MR_PointPair *_this, float value)
MRC_API int * MR_ICPProperties_GetMutable_badIterStopCount(MR_ICPProperties *_this)
MRC_API void MR_PointPair_Set_tgtNorm(MR_PointPair *_this, MR_Vector3f value)
MRC_API MR_PointPairs * MR_IPointPairs_MutableDynamicDowncastTo_MR_PointPairs(MR_IPointPairs *object)
MRC_API double * MR_NumSum_GetMutable_sum(MR_NumSum *_this)
MRC_API void MR_ICP_setDistanceLimit(MR_ICP *_this, float dist)
MRC_API void MR_ICPProperties_Set_method(MR_ICPProperties *_this, MR_ICPMethod value)
MRC_API bool MR_equal_MR_PointPair(const MR_PointPair *_1, const MR_PointPair *_2)
MRC_API float * MR_ICPProperties_GetMutable_distThresholdSq(MR_ICPProperties *_this)
MRC_API MR_ICP * MR_ICP_ConstructFromAnother(MR_PassBy _other_pass_by, MR_ICP *_other)
MRC_API MR_ICPPairData * MR_ICPPairData_ConstructFromAnother(const MR_ICPPairData *_other)
MRC_API MR_VertId * MR_PointPair_GetMutable_tgtCloseVert(MR_PointPair *_this)
MRC_API void MR_ICP_DestroyArray(const MR_ICP *_this)
Destroys a heap-allocated array of MR_ICP. Does nothing if the pointer is null.
MRC_API MR_ICPGroupPairs * MR_IPointPairs_MutableDynamicDowncastToOrFail_MR_ICPGroupPairs(MR_IPointPairs *object)
MRC_API const float * MR_ICPPairData_Get_distSq(const MR_ICPPairData *_this)
MRC_API MR_AffineXf3f MR_ICP_autoSelectFloatXf(MR_ICP *_this)
MRC_API void MR_NumSum_Destroy(const MR_NumSum *_this)
Destroys a heap-allocated instance of MR_NumSum. Does nothing if the pointer is null.
MRC_API bool * MR_ICPProperties_GetMutable_mutualClosest(MR_ICPProperties *_this)
MRC_API const bool * MR_ICPProperties_Get_mutualClosest(const MR_ICPProperties *_this)
MRC_API MR_ICP * MR_ICP_OffsetMutablePtr(MR_ICP *ptr, ptrdiff_t i)
MRC_API void MR_ICPProperties_Set_cosThreshold(MR_ICPProperties *_this, float value)
MRC_API float * MR_ICPProperties_GetMutable_farDistFactor(MR_ICPProperties *_this)
struct MR_ICPProperties MR_ICPProperties
Definition MRICP.h:66
MRC_API const float * MR_PointPair_Get_distSq(const MR_PointPair *_this)
MRC_API float MR_getMeanSqDistToPlane(const MR_IPointPairs *pairs)
struct MR_IPointPairs MR_IPointPairs
Definition MRICP.h:50
MRC_API MR_ICP * MR_ICP_Construct_6(const MR_MeshOrPoints *flt, const MR_MeshOrPoints *ref, const MR_AffineXf3f *fltXf, const MR_AffineXf3f *refXf, const MR_VertBitSet *fltSamples, const MR_VertBitSet *refSamples)
MRC_API bool MR_equal_MR_ICPPairData(const MR_ICPPairData *_1, const MR_ICPPairData *_2)
MRC_API MR_AffineXf3d MR_getAligningXf(const MR_PointToPlaneAligningTransform *p2pl, MR_ICPMode mode, float angleLimit, float scaleLimit, const MR_Vector3f *fixedRotationAxis)
MRC_API void MR_IPointPairs_Destroy(const MR_IPointPairs *_this)
Destroys a heap-allocated instance of MR_IPointPairs. Does nothing if the pointer is null.
MRC_API const MR_ICPPairData * MR_ICPPairData_OffsetPtr(const MR_ICPPairData *ptr, ptrdiff_t i)
MRC_API MR_PointPairs * MR_PointPairs_AssignFromAnother(MR_PointPairs *_this, MR_PassBy _other_pass_by, MR_PointPairs *_other)
MRC_API const MR_Vector3f * MR_ICPProperties_Get_fixedRotationAxis(const MR_ICPProperties *_this)
MRC_API MR_std_vector_MR_PointPair * MR_PointPairs_GetMutable_vec(MR_PointPairs *_this)
MRC_API const MR_ICPGroupPairs * MR_IPointPairs_DynamicDowncastTo_MR_ICPGroupPairs(const MR_IPointPairs *object)
Definition MRAffineXf.h:47
Definition MRAffineXf.h:39
Generated from class MR::Vector3f.
Definition MRVector3.h:47
Definition MRId.h:55