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
80
85
91
97
102
108
114
119
125
131
136
142
148
153
159
165
170
176
180
185
188MRC_API MR_ICPPairData *MR_ICPPairData_ConstructFrom(MR_Vector3f srcPoint, MR_Vector3f srcNorm, MR_Vector3f tgtPoint, MR_Vector3f tgtNorm, float distSq, float weight);
189
192
195
200
204
209
213
218
221
224
230
235
241
246
252
259
265
272
278
283
289
295
300
306
312
317
323
329
334
340
346
351
357
363
368
374
380
385
391
397
402
408
412
417
420
423
427
430
435
438
441
447
452
458
463
469
472
475
480
485
489
492
495
500
504
509
513
520
526
531
535
540
544
551
557
563
568
574
580
585
591
595
600
603
606
610
613
617
620
623
628
633
638
642
647
652
656MRC_API const int *MR_NumSum_Get_num(const MR_NumSum *_this);
657
660MRC_API void MR_NumSum_Set_num(MR_NumSum *_this, int value);
661
666
670MRC_API const double *MR_NumSum_Get_sum(const MR_NumSum *_this);
671
674MRC_API void MR_NumSum_Set_sum(MR_NumSum *_this, double value);
675
680
684
689
693
695MRC_API const MR_NumSum *MR_NumSum_OffsetPtr(const MR_NumSum *ptr, ptrdiff_t i);
696
699
704
707
710
716
720
726
734MRC_API MR_NumSum *MR_getSumSqDistToPoint(const MR_IPointPairs *pairs, const double *inaccuracy);
735
743MRC_API MR_NumSum *MR_getSumSqDistToPlane(const MR_IPointPairs *pairs, const double *inaccuracy);
744
749
754
759
764MRC_API MR_AffineXf3d MR_getAligningXf(const MR_PointToPlaneAligningTransform *p2pl, MR_ICPMode mode, float angleLimit, float scaleLimit, const MR_Vector3f *fixedRotationAxis);
765
771
776
782
783// [radians]
788
789// [radians]
793
794// [radians]
799
806
812
819
820// in [-1,1]
825
826// in [-1,1]
830
831// in [-1,1]
836
837// [distance^2]
842
843// [distance^2]
847
848// [distance^2]
853
854// dimensionless
859
860// dimensionless
864
865// dimensionless
870
877
883
890
896
901
907
914
920
927
934
940
947
948// [distance]
953
954// [distance]
958
959// [distance]
964
971
977
984
988
993
996MRC_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);
997
1000
1003
1008
1011
1014
1020
1025
1031MRC_API void MR_updatePointPairs(MR_PointPairs *pairs, const MR_MeshOrPointsXf *src, const MR_MeshOrPointsXf *tgt, float cosThreshold, float distThresholdSq, bool mutualClosest);
1032
1036
1038MRC_API const MR_ICP *MR_ICP_OffsetPtr(const MR_ICP *ptr, ptrdiff_t i);
1039
1042
1060MRC_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);
1061
1070MRC_API MR_ICP *MR_ICP_Construct_4(const MR_MeshOrPointsXf *flt, const MR_MeshOrPointsXf *ref, const MR_VertBitSet *fltSamples, const MR_VertBitSet *refSamples);
1071
1084MRC_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);
1085
1090MRC_API MR_ICP *MR_ICP_Construct_3(const MR_MeshOrPointsXf *flt, const MR_MeshOrPointsXf *ref, float samplingVoxelSize);
1091
1093MRC_API void MR_ICP_Destroy(const MR_ICP *_this);
1094
1097
1102
1108
1111MRC_API void MR_ICP_setCosineLimit(MR_ICP *_this, float cos);
1112
1115MRC_API void MR_ICP_setDistanceLimit(MR_ICP *_this, float dist);
1116
1120
1123MRC_API void MR_ICP_setFarDistFactor(MR_ICP *_this, float factor);
1124
1129MRC_API void MR_ICP_setFltSamples(MR_ICP *_this, const MR_VertBitSet *fltSamples);
1130
1133MRC_API void MR_ICP_sampleFltPoints(MR_ICP *_this, float samplingVoxelSize);
1134
1139MRC_API void MR_ICP_setRefSamples(MR_ICP *_this, const MR_VertBitSet *refSamples);
1140
1143MRC_API void MR_ICP_sampleRefPoints(MR_ICP *_this, float samplingVoxelSize);
1144
1148MRC_API void MR_ICP_samplePoints(MR_ICP *_this, float samplingVoxelSize);
1149
1155MRC_API void MR_ICP_setXfs(MR_ICP *_this, const MR_AffineXf3f *fltXf, const MR_AffineXf3f *refXf);
1156
1162
1169
1174
1179
1184
1189
1194
1199
1204
1210
1216
1222
1223#ifdef __cplusplus
1224} // extern "C"
1225#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:195
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)
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 void MR_PointPair_Set_weight(MR_PointPair *_this, float 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 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)
Offsets a pointer to an array element by i positions (not bytes). Use only if you're certain that the...
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)
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 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 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 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)
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_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 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)
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: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)
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 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)
Upcasts an instance of MR::PointPair to its base class MR::ICPPairData.
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_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 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)
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
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 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 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)
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:23
uint64_t MR_uint64_t
Definition common.h:18
#define MRC_API
Definition exports.h:11
Definition MRAffineXf.h:47
Definition MRAffineXf.h:39
Definition MRVector3.h:52
Definition MRId.h:55