00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00053 #ifndef __vtkPCAAnalysisFilter_h
00054 #define __vtkPCAAnalysisFilter_h
00055
00056 #include "vtkPointSetAlgorithm.h"
00057
00058 class vtkFloatArray;
00059 class vtkPointSet;
00060
00061 class VTK_HYBRID_EXPORT vtkPCAAnalysisFilter : public vtkPointSetAlgorithm
00062 {
00063 public:
00064 vtkTypeRevisionMacro(vtkPCAAnalysisFilter,vtkPointSetAlgorithm);
00065
00067 void PrintSelf(ostream& os, vtkIndent indent);
00068
00070 static vtkPCAAnalysisFilter *New();
00071
00073
00074 vtkGetObjectMacro(Evals, vtkFloatArray);
00076
00078 void SetNumberOfInputs(int n);
00079
00082 void SetInput(int idx,vtkPointSet* p);
00083
00086 vtkPointSet* GetInput(int idx);
00087
00094 void GetParameterisedShape(vtkFloatArray *b, vtkPointSet* shape);
00095
00101 void GetShapeParameters(vtkPointSet *shape, vtkFloatArray *b, int bsize);
00102
00105 int GetModesRequiredFor(double proportion);
00106
00107 protected:
00108 vtkPCAAnalysisFilter();
00109 ~vtkPCAAnalysisFilter();
00110
00112
00113 virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *);
00114 virtual int FillInputPortInformation(int port, vtkInformation *info);
00116
00117 private:
00118 vtkPCAAnalysisFilter(const vtkPCAAnalysisFilter&);
00119 void operator=(const vtkPCAAnalysisFilter&);
00120
00121
00122 vtkFloatArray *Evals;
00123
00124
00125 double **evecMat2;
00126
00127
00128 double *meanshape;
00129 };
00130
00131 #endif
00132
00133