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 
39 #ifndef vtkIterativeClosestPointTransform_h
40 #define vtkIterativeClosestPointTransform_h
41 
42 #include "vtkCommonDataModelModule.h" // For export macro
43 #include "vtkLinearTransform.h"
44 
45 #define VTK_ICP_MODE_RMS 0
46 #define VTK_ICP_MODE_AV 1
47 
48 VTK_ABI_NAMESPACE_BEGIN
49 class vtkCellLocator;
51 class vtkDataSet;
52 
53 class VTKCOMMONDATAMODEL_EXPORT vtkIterativeClosestPointTransform : public vtkLinearTransform
54 {
55 public:
58  void PrintSelf(ostream& os, vtkIndent indent) override;
59 
61 
66  vtkGetObjectMacro(Source, vtkDataSet);
67  vtkGetObjectMacro(Target, vtkDataSet);
69 
71 
75  void SetLocator(vtkCellLocator* locator);
76  vtkGetObjectMacro(Locator, vtkCellLocator);
78 
80 
83  vtkSetMacro(MaximumNumberOfIterations, int);
84  vtkGetMacro(MaximumNumberOfIterations, int);
86 
88 
91  vtkGetMacro(NumberOfIterations, int);
93 
95 
99  vtkSetMacro(CheckMeanDistance, vtkTypeBool);
100  vtkGetMacro(CheckMeanDistance, vtkTypeBool);
101  vtkBooleanMacro(CheckMeanDistance, vtkTypeBool);
103 
105 
112  vtkSetClampMacro(MeanDistanceMode, int, VTK_ICP_MODE_RMS, VTK_ICP_MODE_AV);
113  vtkGetMacro(MeanDistanceMode, int);
114  void SetMeanDistanceModeToRMS() { this->SetMeanDistanceMode(VTK_ICP_MODE_RMS); }
115  void SetMeanDistanceModeToAbsoluteValue() { this->SetMeanDistanceMode(VTK_ICP_MODE_AV); }
118 
120 
125  vtkSetMacro(MaximumMeanDistance, double);
126  vtkGetMacro(MaximumMeanDistance, double);
128 
130 
133  vtkGetMacro(MeanDistance, double);
135 
137 
142  vtkSetMacro(MaximumNumberOfLandmarks, int);
143  vtkGetMacro(MaximumNumberOfLandmarks, int);
145 
147 
151  vtkSetMacro(StartByMatchingCentroids, vtkTypeBool);
152  vtkGetMacro(StartByMatchingCentroids, vtkTypeBool);
153  vtkBooleanMacro(StartByMatchingCentroids, vtkTypeBool);
155 
157 
161  vtkGetObjectMacro(LandmarkTransform, vtkLandmarkTransform);
163 
168  void Inverse() override;
169 
174 
175 protected:
177 
183 
188 
193 
197  vtkMTimeType GetMTime() override;
198 
201 
202  void InternalUpdate() override;
203 
207  void InternalDeepCopy(vtkAbstractTransform* transform) override;
208 
218 
220  double MeanDistance;
222 
223 private:
225  void operator=(const vtkIterativeClosestPointTransform&) = delete;
226 };
227 
228 VTK_ABI_NAMESPACE_END
229 #endif
superclass for all geometric transformations
octree-based spatial search object to quickly locate cells
abstract class to specify dataset behavior
Definition: vtkDataSet.h:62
a simple class to control print indentation
Definition: vtkIndent.h:38
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