VTK  9.3.0
vtkIterativeClosestPointTransform.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2 // SPDX-License-Identifier: BSD-3-Clause
3 
30 #ifndef vtkIterativeClosestPointTransform_h
31 #define vtkIterativeClosestPointTransform_h
32 
33 #include "vtkCommonDataModelModule.h" // For export macro
34 #include "vtkLinearTransform.h"
35 
36 #define VTK_ICP_MODE_RMS 0
37 #define VTK_ICP_MODE_AV 1
38 
39 VTK_ABI_NAMESPACE_BEGIN
40 class vtkCellLocator;
42 class vtkDataSet;
43 
44 class VTKCOMMONDATAMODEL_EXPORT vtkIterativeClosestPointTransform : public vtkLinearTransform
45 {
46 public:
49  void PrintSelf(ostream& os, vtkIndent indent) override;
50 
52 
57  vtkGetObjectMacro(Source, vtkDataSet);
58  vtkGetObjectMacro(Target, vtkDataSet);
60 
62 
66  void SetLocator(vtkCellLocator* locator);
67  vtkGetObjectMacro(Locator, vtkCellLocator);
69 
71 
74  vtkSetMacro(MaximumNumberOfIterations, int);
75  vtkGetMacro(MaximumNumberOfIterations, int);
77 
79 
82  vtkGetMacro(NumberOfIterations, int);
84 
86 
90  vtkSetMacro(CheckMeanDistance, vtkTypeBool);
91  vtkGetMacro(CheckMeanDistance, vtkTypeBool);
92  vtkBooleanMacro(CheckMeanDistance, vtkTypeBool);
94 
96 
103  vtkSetClampMacro(MeanDistanceMode, int, VTK_ICP_MODE_RMS, VTK_ICP_MODE_AV);
104  vtkGetMacro(MeanDistanceMode, int);
105  void SetMeanDistanceModeToRMS() { this->SetMeanDistanceMode(VTK_ICP_MODE_RMS); }
106  void SetMeanDistanceModeToAbsoluteValue() { this->SetMeanDistanceMode(VTK_ICP_MODE_AV); }
109 
111 
116  vtkSetMacro(MaximumMeanDistance, double);
117  vtkGetMacro(MaximumMeanDistance, double);
119 
121 
124  vtkGetMacro(MeanDistance, double);
126 
128 
133  vtkSetMacro(MaximumNumberOfLandmarks, int);
134  vtkGetMacro(MaximumNumberOfLandmarks, int);
136 
138 
142  vtkSetMacro(StartByMatchingCentroids, vtkTypeBool);
143  vtkGetMacro(StartByMatchingCentroids, vtkTypeBool);
144  vtkBooleanMacro(StartByMatchingCentroids, vtkTypeBool);
146 
148 
152  vtkGetObjectMacro(LandmarkTransform, vtkLandmarkTransform);
154 
159  void Inverse() override;
160 
165 
166 protected:
168 
174 
179 
184 
188  vtkMTimeType GetMTime() override;
189 
192 
193  void InternalUpdate() override;
194 
198  void InternalDeepCopy(vtkAbstractTransform* transform) override;
199 
209 
211  double MeanDistance;
213 
214 private:
216  void operator=(const vtkIterativeClosestPointTransform&) = delete;
217 };
218 
219 VTK_ABI_NAMESPACE_END
220 #endif
superclass for all geometric transformations
octree-based spatial search object to quickly locate cells
abstract class to specify dataset behavior
Definition: vtkDataSet.h:53
a simple class to control print indentation
Definition: vtkIndent.h:29
Implementation of the ICP algorithm.
void ReleaseLocator()
Release locator.
void InternalUpdate() override
Perform any subclass-specific Update.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkAbstractTransform * MakeTransform() override
Make another transform of the same type.
void SetMeanDistanceModeToRMS()
Specify the mean distance mode.
void SetLocator(vtkCellLocator *locator)
Set/Get a spatial locator for speeding up the search process.
static vtkIterativeClosestPointTransform * New()
void InternalDeepCopy(vtkAbstractTransform *transform) override
This method does no type checking, use DeepCopy instead.
void SetSource(vtkDataSet *source)
Specify the source and target data sets.
void CreateDefaultLocator()
Create default locator.
void SetTarget(vtkDataSet *target)
Specify the source and target data sets.
void Inverse() override
Invert the transformation.
void SetMeanDistanceModeToAbsoluteValue()
Specify the mean distance mode.
const char * GetMeanDistanceModeAsString()
Specify the mean distance mode.
void ReleaseSource()
Release source and target.
void ReleaseTarget()
Release source and target.
vtkMTimeType GetMTime() override
Get the MTime of this object also considering the locator.
a linear transform specified by two corresponding point sets
abstract superclass for linear transformations
int vtkTypeBool
Definition: vtkABI.h:64
boost::graph_traits< vtkGraph * >::vertex_descriptor source(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)
boost::graph_traits< vtkGraph * >::vertex_descriptor target(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)
#define VTK_ICP_MODE_RMS
vtkTypeUInt32 vtkMTimeType
Definition: vtkType.h:270