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_MeshOrPoints MR_MeshOrPoints; // Defined in `#include <MRCMesh/MRMeshOrPoints.h>`.
19typedef struct MR_MeshOrPointsXf MR_MeshOrPointsXf; // Defined in `#include <MRCMesh/MRMeshOrPoints.h>`.
20typedef struct MR_PointToPlaneAligningTransform MR_PointToPlaneAligningTransform; // Defined in `#include <MRCMesh/MRPointToPlaneAligningTransform.h>`.
21typedef struct MR_VertBitSet MR_VertBitSet; // Defined in `#include <MRCMesh/MRBitSet.h>`.
22typedef struct MR_std_string MR_std_string; // Defined in `#include <MRCMisc/std_string.h>`.
23typedef struct MR_std_vector_MR_PointPair MR_std_vector_MR_PointPair; // Defined in `#include <MRCMisc/std_vector_MR_PointPair.h>`.
24
25
33
41
49
56
59typedef struct MR_NumSum MR_NumSum;
60
65
71typedef struct MR_ICP MR_ICP;
72
79
86
93
100
107
114
121
128
135
142
149
156
163
169
176
183
189
196
200
205
213MRC_API MR_ICPPairData *MR_ICPPairData_ConstructFrom(MR_Vector3f srcPoint, MR_Vector3f srcNorm, MR_Vector3f tgtPoint, MR_Vector3f tgtNorm, float distSq, float weight);
214
218
222
228
231
234
242
247
254
261
268
276
284
292
299
305
312
319
325
332
339
346
353
360
367
374
381
388
395
402
409
416
423
429
436
443
449
456
460
465
469
473
478
482
488
493
499
502
505
513
518
525
532
539
542
545
550
555
559
563
567
574
581
588
595
602
609
613
618
622
626
631
635
641
646
652
657
665
672
677
680
683
690
695
700
704
709
714
719MRC_API const int *MR_NumSum_Get_num(const MR_NumSum *_this);
720
724MRC_API void MR_NumSum_Set_num(MR_NumSum *_this, int value);
725
731
736MRC_API const double *MR_NumSum_Get_sum(const MR_NumSum *_this);
737
741MRC_API void MR_NumSum_Set_sum(MR_NumSum *_this, double value);
742
748
752
757
762
765MRC_API const MR_NumSum *MR_NumSum_OffsetPtr(const MR_NumSum *ptr, ptrdiff_t i);
766
770
776
779
782
790
794
800
808MRC_API MR_NumSum *MR_getSumSqDistToPoint(const MR_IPointPairs *pairs, const double *inaccuracy);
809
817MRC_API MR_NumSum *MR_getSumSqDistToPlane(const MR_IPointPairs *pairs, const double *inaccuracy);
818
823
828
833
838MRC_API MR_AffineXf3d MR_getAligningXf(const MR_PointToPlaneAligningTransform *p2pl, MR_ICPMode mode, float angleLimit, float scaleLimit, const MR_Vector3f *fixedRotationAxis);
839
846
853
860
861// [radians]
867
868// [radians]
873
874// [radians]
880
888
895
903
904// in [-1,1]
910
911// in [-1,1]
916
917// in [-1,1]
923
924// [distance^2]
930
931// [distance^2]
936
937// [distance^2]
943
944// dimensionless
950
951// dimensionless
956
957// dimensionless
963
971
979
987
994
1001
1008
1016
1023
1031
1039
1046
1054
1055// [distance]
1061
1062// [distance]
1067
1068// [distance]
1074
1082
1089
1097
1101
1106
1113MRC_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);
1114
1118
1122
1128
1131
1134
1142
1147
1153MRC_API void MR_updatePointPairs(MR_PointPairs *pairs, const MR_MeshOrPointsXf *src, const MR_MeshOrPointsXf *tgt, float cosThreshold, float distThresholdSq, bool mutualClosest);
1154
1159
1162MRC_API const MR_ICP *MR_ICP_OffsetPtr(const MR_ICP *ptr, ptrdiff_t i);
1163
1167
1191MRC_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);
1192
1205MRC_API MR_ICP *MR_ICP_Construct_4(const MR_MeshOrPointsXf *flt, const MR_MeshOrPointsXf *ref, const MR_VertBitSet *fltSamples, const MR_VertBitSet *refSamples);
1206
1223MRC_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);
1224
1231MRC_API MR_ICP *MR_ICP_Construct_3(const MR_MeshOrPointsXf *flt, const MR_MeshOrPointsXf *ref, float samplingVoxelSize);
1232
1234MRC_API void MR_ICP_Destroy(const MR_ICP *_this);
1235
1238
1245
1251
1254MRC_API void MR_ICP_setCosineLimit(MR_ICP *_this, float cos);
1255
1258MRC_API void MR_ICP_setDistanceLimit(MR_ICP *_this, float dist);
1259
1263
1266MRC_API void MR_ICP_setFarDistFactor(MR_ICP *_this, float factor);
1267
1272MRC_API void MR_ICP_setFltSamples(MR_ICP *_this, const MR_VertBitSet *fltSamples);
1273
1276MRC_API void MR_ICP_sampleFltPoints(MR_ICP *_this, float samplingVoxelSize);
1277
1282MRC_API void MR_ICP_setRefSamples(MR_ICP *_this, const MR_VertBitSet *refSamples);
1283
1286MRC_API void MR_ICP_sampleRefPoints(MR_ICP *_this, float samplingVoxelSize);
1287
1291MRC_API void MR_ICP_samplePoints(MR_ICP *_this, float samplingVoxelSize);
1292
1298MRC_API void MR_ICP_setXfs(MR_ICP *_this, const MR_AffineXf3f *fltXf, const MR_AffineXf3f *refXf);
1299
1305
1312
1317
1322
1327
1332
1337
1342
1347
1353
1359
1365
1366#ifdef __cplusplus
1367} // extern "C"
1368#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:265
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 const MR_Vector3f * MR_PointPair_Get_srcPoint(const MR_PointPair *_this)
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)
MRC_API const MR_PointPair * MR_PointPair_StaticDowncastFrom_MR_ICPPairData(const MR_ICPPairData *object)
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_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 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 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_std_string * MR_getICPStatusInfo(int iterations, MR_ICPExitType exitType)
struct MR_PointToPlaneAligningTransform MR_PointToPlaneAligningTransform
Definition MRICP.h:20
struct MR_ICP MR_ICP
Definition MRICP.h:71
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 const MR_PointPairs * MR_PointPairs_DynamicDowncastFromOrFail_MR_IPointPairs(const MR_IPointPairs *object)
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 MR_PointPairs * MR_PointPairs_MutableStaticDowncastFrom_MR_IPointPairs(MR_IPointPairs *object)
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_PointPairs * MR_PointPairs_MutableDynamicDowncastFrom_MR_IPointPairs(MR_IPointPairs *object)
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 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 MR_PointPairs * MR_PointPairs_MutableDynamicDowncastFromOrFail_MR_IPointPairs(MR_IPointPairs *object)
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 const MR_PointPairs * MR_PointPairs_DynamicDowncastFrom_MR_IPointPairs(const MR_IPointPairs *object)
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_PointPair * MR_PointPair_MutableStaticDowncastFrom_MR_ICPPairData(MR_ICPPairData *object)
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)
MRC_API void MR_ICPPairData_Set_distSq(MR_ICPPairData *_this, float value)
struct MR_PointPair MR_PointPair
Definition MRICP.h:40
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:23
struct MR_ICPPairData MR_ICPPairData
Definition MRICP.h:32
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 const MR_PointPairs * MR_PointPairs_StaticDowncastFrom_MR_IPointPairs(const MR_IPointPairs *object)
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 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 MR_Vector3f * MR_PointPair_GetMutable_srcPoint(MR_PointPair *_this)
struct MR_NumSum MR_NumSum
Definition MRICP.h:59
struct MR_PointPairs MR_PointPairs
Definition MRICP.h:55
struct MR_MeshOrPointsXf MR_MeshOrPointsXf
Definition MRICP.h:19
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_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_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 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 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:64
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:48
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)
MR_PassBy
Definition common.h:23
uint64_t MR_uint64_t
Definition common.h:18
#define MRC_API
Definition include/MRCMisc/exports.h:11
Definition MRAffineXf.h:47
Definition MRAffineXf.h:39
Generated from class MR::Vector3f.
Definition MRVector3.h:47
Definition MRId.h:42