Main Page Class Hierarchy Alphabetical List Compound List File List Compound Members File Members Related Pages
Hybrid/vtkIterativeClosestPointTransform.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00055 #ifndef __vtkIterativeClosestPointTransform_h
00056 #define __vtkIterativeClosestPointTransform_h
00057
00058 #include "vtkLinearTransform.h"
00059
00060 #define VTK_ICP_MODE_RMS 0
00061 #define VTK_ICP_MODE_AV 1
00062
00063 class vtkCellLocator;
00064 class vtkLandmarkTransform;
00065 class vtkDataSet;
00066
00067 class VTK_HYBRID_EXPORT vtkIterativeClosestPointTransform : public vtkLinearTransform
00068 {
00069 public:
00070 static vtkIterativeClosestPointTransform *New();
00071 vtkTypeRevisionMacro(vtkIterativeClosestPointTransform,vtkLinearTransform);
00072 void PrintSelf(ostream& os, vtkIndent indent);
00073
00075
00076 void SetSource(vtkDataSet *source);
00077 void SetTarget(vtkDataSet *target);
00078 vtkGetObjectMacro(Source, vtkDataSet);
00079 vtkGetObjectMacro(Target, vtkDataSet);
00081
00083
00085 void SetLocator(vtkCellLocator *locator);
00086 vtkGetObjectMacro(Locator,vtkCellLocator);
00088
00090
00091 vtkSetMacro(MaximumNumberOfIterations, int);
00092 vtkGetMacro(MaximumNumberOfIterations, int);
00094
00096
00097 vtkGetMacro(NumberOfIterations, int);
00099
00101
00102 vtkSetMacro(CheckMeanDistance, int);
00103 vtkGetMacro(CheckMeanDistance, int);
00104 vtkBooleanMacro(CheckMeanDistance, int);
00106
00108
00113 vtkSetClampMacro(MeanDistanceMode,int,
00114 VTK_ICP_MODE_RMS,VTK_ICP_MODE_AV);
00115 vtkGetMacro(MeanDistanceMode,int);
00116 void SetMeanDistanceModeToRMS()
00117 {this->SetMeanDistanceMode(VTK_ICP_MODE_RMS);}
00118 void SetMeanDistanceModeToAbsoluteValue()
00119 {this->SetMeanDistanceMode(VTK_ICP_MODE_AV);}
00120 const char *GetMeanDistanceModeAsString();
00122
00124
00126 vtkSetMacro(MaximumMeanDistance, float);
00127 vtkGetMacro(MaximumMeanDistance, float);
00129
00131
00132 vtkGetMacro(MeanDistance, float);
00134
00136
00139 vtkSetMacro(MaximumNumberOfLandmarks, int);
00140 vtkGetMacro(MaximumNumberOfLandmarks, int);
00142
00144
00145 vtkSetMacro(StartByMatchingCentroids, int);
00146 vtkGetMacro(StartByMatchingCentroids, int);
00147 vtkBooleanMacro(StartByMatchingCentroids, int);
00149
00151
00154 vtkGetObjectMacro(LandmarkTransform,vtkLandmarkTransform);
00156
00159 void Inverse();
00160
00162 vtkAbstractTransform *MakeTransform();
00163
00164 protected:
00165
00167
00168 void ReleaseSource(void);
00169 void ReleaseTarget(void);
00171
00173 void ReleaseLocator(void);
00174
00176 void CreateDefaultLocator(void);
00177
00179 unsigned long int GetMTime();
00180
00181 vtkIterativeClosestPointTransform();
00182 ~vtkIterativeClosestPointTransform();
00183
00184 void InternalUpdate();
00185
00187 void InternalDeepCopy(vtkAbstractTransform *transform);
00188
00189 vtkDataSet* Source;
00190 vtkDataSet* Target;
00191 vtkCellLocator *Locator;
00192 int MaximumNumberOfIterations;
00193 int CheckMeanDistance;
00194 int MeanDistanceMode;
00195 float MaximumMeanDistance;
00196 int MaximumNumberOfLandmarks;
00197 int StartByMatchingCentroids;
00198
00199 int NumberOfIterations;
00200 float MeanDistance;
00201 vtkLandmarkTransform *LandmarkTransform;
00202 private:
00203 vtkIterativeClosestPointTransform(const vtkIterativeClosestPointTransform&);
00204 void operator=(const vtkIterativeClosestPointTransform&);
00205 };
00206
00207 #endif