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
34
41
49
55
57typedef struct MR_NumSum MR_NumSum;
58
61
66typedef struct MR_ICP MR_ICP;
67
73
78
84
90
95
101
107
112
118
124
129
135
141
146
152
158
163
169
173
178
181MRC_API MR_ICPPairData *MR_ICPPairData_ConstructFrom(MR_Vector3f srcPoint, MR_Vector3f srcNorm, MR_Vector3f tgtPoint, MR_Vector3f tgtNorm, float distSq, float weight);
182
185
188
193
197
202
206
211
214
217
223
228
234
239
245
252
258
265
271
276
282
288
293
299
303
308
311
314
318
321
326
329
332
338
343
349
354
360
363
366
371
376
380
383
386
391
395
400
404
411
417
422
426
431
435
442
448
454
459
465
469
474
477
480
484
487
491
494
497
502
507
512
516
521
526
530MRC_API const int *MR_NumSum_Get_num(const MR_NumSum *_this);
531
534MRC_API void MR_NumSum_Set_num(MR_NumSum *_this, int value);
535
540
544MRC_API const double *MR_NumSum_Get_sum(const MR_NumSum *_this);
545
548MRC_API void MR_NumSum_Set_sum(MR_NumSum *_this, double value);
549
554
558
563
567
569MRC_API const MR_NumSum *MR_NumSum_OffsetPtr(const MR_NumSum *ptr, ptrdiff_t i);
570
573
578
581
584
590
594
600
608MRC_API MR_NumSum *MR_getSumSqDistToPoint(const MR_IPointPairs *pairs, const double *inaccuracy);
609
617MRC_API MR_NumSum *MR_getSumSqDistToPlane(const MR_IPointPairs *pairs, const double *inaccuracy);
618
623
628
633
638MRC_API MR_AffineXf3f MR_getAligningXf(const MR_PointToPlaneAligningTransform *p2pl, MR_ICPMode mode, float angleLimit, float scaleLimit, const MR_Vector3f *fixedRotationAxis);
639
645
650
656
657// [radians]
662
663// [radians]
667
668// [radians]
673
679
684
690
691// in [-1,1]
696
697// in [-1,1]
701
702// in [-1,1]
707
708// [distance^2]
713
714// [distance^2]
718
719// [distance^2]
724
725// dimensionless
730
731// dimensionless
735
736// dimensionless
741
747
752
758
764
769
775
781
786
792
798
803
809
810// [distance]
815
816// [distance]
820
821// [distance]
826
832
837
843
847
852
855MRC_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);
856
859
862
867
870
873
879
884
890MRC_API void MR_updatePointPairs(MR_PointPairs *pairs, const MR_MeshOrPointsXf *src, const MR_MeshOrPointsXf *tgt, float cosThreshold, float distThresholdSq, bool mutualClosest);
891
895
897MRC_API const MR_ICP *MR_ICP_OffsetPtr(const MR_ICP *ptr, ptrdiff_t i);
898
901
919MRC_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);
920
929MRC_API MR_ICP *MR_ICP_Construct_4(const MR_MeshOrPointsXf *flt, const MR_MeshOrPointsXf *ref, const MR_VertBitSet *fltSamples, const MR_VertBitSet *refSamples);
930
943MRC_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);
944
949MRC_API MR_ICP *MR_ICP_Construct_3(const MR_MeshOrPointsXf *flt, const MR_MeshOrPointsXf *ref, float samplingVoxelSize);
950
952MRC_API void MR_ICP_Destroy(const MR_ICP *_this);
953
956
961
967
970MRC_API void MR_ICP_setCosineLimit(MR_ICP *_this, float cos);
971
974MRC_API void MR_ICP_setDistanceLimit(MR_ICP *_this, float dist);
975
978MRC_API void MR_ICP_setBadIterCount(MR_ICP *_this, int iter);
979
982MRC_API void MR_ICP_setFarDistFactor(MR_ICP *_this, float factor);
983
988MRC_API void MR_ICP_setFltSamples(MR_ICP *_this, const MR_VertBitSet *fltSamples);
989
992MRC_API void MR_ICP_sampleFltPoints(MR_ICP *_this, float samplingVoxelSize);
993
998MRC_API void MR_ICP_setRefSamples(MR_ICP *_this, const MR_VertBitSet *refSamples);
999
1002MRC_API void MR_ICP_sampleRefPoints(MR_ICP *_this, float samplingVoxelSize);
1003
1007MRC_API void MR_ICP_samplePoints(MR_ICP *_this, float samplingVoxelSize);
1008
1014MRC_API void MR_ICP_setXfs(MR_ICP *_this, const MR_AffineXf3f *fltXf, const MR_AffineXf3f *refXf);
1015
1021
1028
1033
1038
1043
1048
1053
1058
1063
1069
1075
1081
1082#ifdef __cplusplus
1083} // extern "C"
1084#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:178
struct MR_std_string MR_std_string
Definition MRE57.h:22
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 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_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 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:19
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 void MR_ICPProperties_Set_farDistFactor(MR_ICPProperties *_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 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 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 const int * MR_ICPProperties_Get_iterLimit(const MR_ICPProperties *_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 void MR_NumSum_Set_num(MR_NumSum *_this, int value)
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:66
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 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 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: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)
struct MR_std_vector_MR_PointPair MR_std_vector_MR_PointPair
Definition MRICP.h:25
struct MR_ICPPairData MR_ICPPairData
Definition MRICP.h:33
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 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 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 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:57
struct MR_PointPairs MR_PointPairs
Definition MRICP.h:54
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_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 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
Generated from class MR::ICPProperties.
Definition MRICP.h:60
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 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:50
Definition MRId.h:55