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#include <stdint.h>
13
14#ifdef __cplusplus
15extern "C" {
16#endif
17
18typedef struct MR_BitSet MR_BitSet; // Defined in `#include <MRCMesh/MRBitSet.h>`.
19typedef struct MR_ICPGroupPair MR_ICPGroupPair; // Defined in `#include <MRCMesh/MRMultiwayICP.h>`.
20typedef struct MR_ICPGroupPairs MR_ICPGroupPairs; // Defined in `#include <MRCMesh/MRMultiwayICP.h>`.
21typedef struct MR_MeshOrPoints MR_MeshOrPoints; // Defined in `#include <MRCMesh/MRMeshOrPoints.h>`.
22typedef struct MR_MeshOrPointsXf MR_MeshOrPointsXf; // Defined in `#include <MRCMesh/MRMeshOrPoints.h>`.
23typedef struct MR_PointToPlaneAligningTransform MR_PointToPlaneAligningTransform; // Defined in `#include <MRCMesh/MRPointToPlaneAligningTransform.h>`.
24typedef struct MR_VertBitSet MR_VertBitSet; // Defined in `#include <MRCMesh/MRBitSet.h>`.
25typedef struct MR_std_string MR_std_string; // Defined in `#include <MRCMisc/std_string.h>`.
26typedef struct MR_std_vector_MR_PointPair MR_std_vector_MR_PointPair; // Defined in `#include <MRCMisc/std_vector_MR_PointPair.h>`.
27
28
35
42
50
56
58typedef struct MR_NumSum MR_NumSum;
59
62
67typedef struct MR_ICP MR_ICP;
68
74
79
85
91
96
102
108
113
119
125
130
136
142
147
153
159
164
170
174
179
182MRC_API MR_ICPPairData *MR_ICPPairData_ConstructFrom(MR_Vector3f srcPoint, MR_Vector3f srcNorm, MR_Vector3f tgtPoint, MR_Vector3f tgtNorm, float distSq, float weight);
183
186
189
194
198
203
207
212
215
218
224
229
235
240
246
253
259
266
272
277
283
289
294
300
304
309
312
315
319
322
327
330
333
339
344
350
355
361
364
367
372
377
381
384
387
392
396
401
405
412
418
423
427
432
436
443
449
455
460
466
470
475
478
481
485
488
492
495
498
503
508
513
517
522
527
531MRC_API const int32_t *MR_NumSum_Get_num(const MR_NumSum *_this);
532
535MRC_API void MR_NumSum_Set_num(MR_NumSum *_this, int32_t value);
536
541
545MRC_API const double *MR_NumSum_Get_sum(const MR_NumSum *_this);
546
549MRC_API void MR_NumSum_Set_sum(MR_NumSum *_this, double value);
550
555
559
564
567MRC_API MR_NumSum *MR_NumSum_ConstructFrom(int32_t num, double sum);
568
570MRC_API const MR_NumSum *MR_NumSum_OffsetPtr(const MR_NumSum *ptr, ptrdiff_t i);
571
574
579
582
585
591
595
601
609MRC_API MR_NumSum *MR_getSumSqDistToPoint(const MR_IPointPairs *pairs, const double *inaccuracy);
610
618MRC_API MR_NumSum *MR_getSumSqDistToPlane(const MR_IPointPairs *pairs, const double *inaccuracy);
619
624
629
634
639MRC_API MR_AffineXf3f MR_getAligningXf(const MR_PointToPlaneAligningTransform *p2pl, MR_ICPMode mode, float angleLimit, float scaleLimit, const MR_Vector3f *fixedRotationAxis);
640
646
651
657
658// [radians]
663
664// [radians]
668
669// [radians]
674
680
685
691
692// in [-1,1]
697
698// in [-1,1]
702
703// in [-1,1]
708
709// [distance^2]
714
715// [distance^2]
719
720// [distance^2]
725
726// dimensionless
731
732// dimensionless
736
737// dimensionless
742
748
753
759
765
770
776
782
787
793
799
804
810
811// [distance]
816
817// [distance]
821
822// [distance]
827
833
838
844
848
853
856MRC_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, int32_t iterLimit, int32_t badIterStopCount, float exitVal, bool mutualClosest);
857
860
863
868
871
874
880
885
891MRC_API void MR_updatePointPairs(MR_PointPairs *pairs, const MR_MeshOrPointsXf *src, const MR_MeshOrPointsXf *tgt, float cosThreshold, float distThresholdSq, bool mutualClosest);
892
896
898MRC_API const MR_ICP *MR_ICP_OffsetPtr(const MR_ICP *ptr, ptrdiff_t i);
899
902
920MRC_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);
921
930MRC_API MR_ICP *MR_ICP_Construct_4(const MR_MeshOrPointsXf *flt, const MR_MeshOrPointsXf *ref, const MR_VertBitSet *fltSamples, const MR_VertBitSet *refSamples);
931
944MRC_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);
945
950MRC_API MR_ICP *MR_ICP_Construct_3(const MR_MeshOrPointsXf *flt, const MR_MeshOrPointsXf *ref, float samplingVoxelSize);
951
953MRC_API void MR_ICP_Destroy(const MR_ICP *_this);
954
957
962
968
971MRC_API void MR_ICP_setCosineLimit(MR_ICP *_this, float cos);
972
975MRC_API void MR_ICP_setDistanceLimit(MR_ICP *_this, float dist);
976
979MRC_API void MR_ICP_setBadIterCount(MR_ICP *_this, int32_t iter);
980
983MRC_API void MR_ICP_setFarDistFactor(MR_ICP *_this, float factor);
984
989MRC_API void MR_ICP_setFltSamples(MR_ICP *_this, const MR_VertBitSet *fltSamples);
990
993MRC_API void MR_ICP_sampleFltPoints(MR_ICP *_this, float samplingVoxelSize);
994
999MRC_API void MR_ICP_setRefSamples(MR_ICP *_this, const MR_VertBitSet *refSamples);
1000
1003MRC_API void MR_ICP_sampleRefPoints(MR_ICP *_this, float samplingVoxelSize);
1004
1008MRC_API void MR_ICP_samplePoints(MR_ICP *_this, float samplingVoxelSize);
1009
1015MRC_API void MR_ICP_setXfs(MR_ICP *_this, const MR_AffineXf3f *fltXf, const MR_AffineXf3f *refXf);
1016
1022
1029
1034
1039
1044
1049
1054
1059
1064
1070
1076
1082
1083#ifdef __cplusplus
1084} // extern "C"
1085#endif
struct MR_MeshOrPoints MR_MeshOrPoints
Definition MRAABBTreeObjects.h:15
struct MR_VertBitSet MR_VertBitSet
Definition MRAABBTree.h:15
struct MR_BitSet MR_BitSet
Definition MRBitSet.h:179
struct MR_std_string MR_std_string
Definition MRE57.h:22
int32_t MR_ICPMode
The group of transformations, each with its own degrees of freedom.
Definition MRICPEnums.h:29
int32_t MR_ICPExitType
Definition MRICPEnums.h:45
int32_t MR_ICPMethod
The method how to update transformation from point pairs.
Definition MRICPEnums.h:11
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)
Upcasts an instance of MR::PointPairs to its base class MR::IPointPairs.
MRC_API const MR_NumSum * MR_NumSum_OffsetPtr(const MR_NumSum *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_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 const MR_ICPPairData * MR_IPointPairs_index_const(const MR_IPointPairs *_this, MR_uint64_t _1)
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 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_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)
Offsets a pointer to an array element by i positions (not bytes). Use only if you're certain that the...
MRC_API int32_t * MR_ICPProperties_GetMutable_iterLimit(MR_ICPProperties *_this)
MRC_API void MR_updatePointPairs(MR_PointPairs *pairs, const MR_MeshOrPointsXf *src, const MR_MeshOrPointsXf *tgt, float cosThreshold, float distThresholdSq, bool mutualClosest)
MRC_API MR_AffineXf3f MR_getAligningXf(const MR_PointToPlaneAligningTransform *p2pl, MR_ICPMode mode, float angleLimit, float scaleLimit, const MR_Vector3f *fixedRotationAxis)
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:20
MRC_API void MR_ICP_setXfs(MR_ICP *_this, const MR_AffineXf3f *fltXf, const MR_AffineXf3f *refXf)
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 const int32_t * MR_ICPProperties_Get_badIterStopCount(const MR_ICPProperties *_this)
MRC_API void MR_ICPProperties_Set_farDistFactor(MR_ICPProperties *_this, float value)
MRC_API MR_std_string * MR_getICPStatusInfo(int32_t iterations, MR_ICPExitType exitType)
MRC_API const MR_ICPProperties * MR_ICPProperties_OffsetPtr(const MR_ICPProperties *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_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 int32_t * MR_ICPProperties_GetMutable_badIterStopCount(MR_ICPProperties *_this)
MRC_API MR_NumSum * MR_NumSum_AssignFromAnother(MR_NumSum *_this, const MR_NumSum *_other)
MRC_API MR_ICPPairData * MR_IPointPairs_index(MR_IPointPairs *_this, MR_uint64_t _1)
MRC_API void MR_IPointPairs_Set_active(MR_IPointPairs *_this, MR_PassBy value_pass_by, MR_BitSet *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 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 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 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 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)
Offsets a pointer to an array element by i positions (not bytes). Use only if you're certain that the...
MRC_API float * MR_ICPProperties_GetMutable_cosThreshold(MR_ICPProperties *_this)
MRC_API MR_PointPair * MR_PointPair_OffsetMutablePtr(MR_PointPair *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_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)
Offsets a pointer to an array element by i positions (not bytes). Use only if you're certain that the...
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)
Offsets a pointer to an array element by i positions (not bytes). Use only if you're certain that the...
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)
Offsets a pointer to an array element by i positions (not bytes). Use only if you're certain that the...
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)
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_ICP_getStatusInfo(const MR_ICP *_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 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 MR_ICPGroupPairs * MR_IPointPairs_MutableDynamicDowncastTo_MR_ICPGroupPairs(MR_IPointPairs *object)
struct MR_PointToPlaneAligningTransform MR_PointToPlaneAligningTransform
Definition MRICP.h:23
struct MR_ICP MR_ICP
Definition MRICP.h:67
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 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 const int32_t * MR_NumSum_Get_num(const MR_NumSum *_this)
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 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_badIterStopCount(MR_ICPProperties *_this, int32_t value)
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 void MR_ICP_setCosineLimit(MR_ICP *_this, float cos)
MRC_API MR_PointPairs * MR_PointPairs_DefaultConstruct(void)
MRC_API void MR_ICP_setBadIterCount(MR_ICP *_this, int32_t iter)
MRC_API const int32_t * MR_ICPProperties_Get_iterLimit(const MR_ICPProperties *_this)
MRC_API MR_Vector3f * MR_ICPPairData_GetMutable_tgtNorm(MR_ICPPairData *_this)
MRC_API void MR_ICPProperties_Set_iterLimit(MR_ICPProperties *_this, int32_t value)
MRC_API void MR_ICP_setParams(MR_ICP *_this, const MR_ICPProperties *prop)
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, int32_t iterLimit, int32_t badIterStopCount, float exitVal, bool mutualClosest)
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 MR_NumSum * MR_NumSum_ConstructFrom(int32_t num, double sum)
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)
Offsets a pointer to an array element by i positions (not bytes). Use only if you're certain that the...
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:19
MRC_API void MR_ICPPairData_Set_distSq(MR_ICPPairData *_this, float value)
struct MR_PointPair MR_PointPair
Definition MRICP.h:41
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)
struct MR_std_vector_MR_PointPair MR_std_vector_MR_PointPair
Definition MRICP.h:26
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 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 void MR_PointPair_Set_tgtOnBd(MR_PointPair *_this, bool value)
MRC_API MR_PointPair * MR_ICPPairData_MutableStaticDowncastTo_MR_PointPair(MR_ICPPairData *object)
MRC_API MR_NumSum * MR_NumSum_DefaultConstructArray(size_t num_elems)
MRC_API MR_PointPairs * MR_PointPairs_OffsetMutablePtr(MR_PointPairs *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_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_ICPPairData * MR_PointPairs_index(MR_PointPairs *_this, MR_uint64_t idx)
MRC_API void MR_NumSum_Set_num(MR_NumSum *_this, int32_t value)
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
Generated from class MR::NumSum.
Definition MRICP.h:58
struct MR_PointPairs MR_PointPairs
Definition MRICP.h:55
struct MR_MeshOrPointsXf MR_MeshOrPointsXf
Definition MRICP.h:22
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_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)
Upcasts an instance of MR::PointPair to its base class MR::ICPPairData.
MRC_API float * MR_ICPProperties_GetMutable_p2plScaleLimit(MR_ICPProperties *_this)
MRC_API MR_Vector3f * MR_ICPProperties_GetMutable_fixedRotationAxis(MR_ICPProperties *_this)
MRC_API MR_ICPProperties * MR_ICPProperties_OffsetMutablePtr(MR_ICPProperties *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_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 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 int32_t * MR_NumSum_GetMutable_num(MR_NumSum *_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)
Offsets a pointer to an array element by i positions (not bytes). Use only if you're certain that the...
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
Generated from class MR::ICPProperties.
Definition MRICP.h:61
MRC_API float MR_getMeanSqDistToPlane(const MR_IPointPairs *pairs)
struct MR_IPointPairs MR_IPointPairs
Definition MRICP.h:49
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 const MR_ICPPairData * MR_PointPairs_index_const(const MR_PointPairs *_this, MR_uint64_t idx)
MRC_API bool MR_equal_MR_ICPPairData(const MR_ICPPairData *_1, const MR_ICPPairData *_2)
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)
Offsets a pointer to an array element by i positions (not bytes). Use only if you're certain that the...
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)
MR_PassBy
Definition common.h:19
uint64_t MR_uint64_t
Definition common.h:14
#define MRC_API
Definition exports.h:11
Definition MRAffineXf.h:36
Definition MRVector3.h:51
Definition MRId.h:56