00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: $RCSfile: vtkPCAAnalysisFilter.h,v $ 00005 Language: C++ 00006 00007 Copyright (c) 1993-2002 Ken Martin, Will Schroeder, Bill Lorensen 00008 All rights reserved. 00009 See Copyright.txt or http://www.kitware.com/Copyright.htm for details. 00010 00011 This software is distributed WITHOUT ANY WARRANTY; without even 00012 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00013 PURPOSE. See the above copyright notice for more information. 00014 00015 =========================================================================*/ 00068 #ifndef __vtkPCAAnalysisFilter_h 00069 #define __vtkPCAAnalysisFilter_h 00070 00071 #include "vtkSource.h" 00072 00073 class vtkFloatArray; 00074 class vtkPointSet; 00075 00076 class VTK_HYBRID_EXPORT vtkPCAAnalysisFilter : public vtkSource 00077 { 00078 public: 00079 vtkTypeRevisionMacro(vtkPCAAnalysisFilter,vtkSource); 00080 00082 void PrintSelf(ostream& os, vtkIndent indent); 00083 00085 static vtkPCAAnalysisFilter *New(); 00086 00088 00089 vtkGetObjectMacro(Evals, vtkFloatArray); 00091 00093 void SetNumberOfInputs(int n); 00094 00097 void SetInput(int idx,vtkPointSet* p); 00098 00101 vtkPointSet* GetOutput(int idx); 00102 00109 void GetParameterisedShape(vtkFloatArray *b, vtkPointSet* shape); 00110 00116 void GetShapeParameters(vtkPointSet *shape, vtkFloatArray *b, int bsize); 00117 00120 vtkPointSet* GetInput(int idx); 00121 00124 int GetModesRequiredFor(float proportion); 00125 00126 protected: 00127 vtkPCAAnalysisFilter(); 00128 ~vtkPCAAnalysisFilter(); 00129 00131 void Execute(); 00132 00133 private: 00134 vtkPCAAnalysisFilter(const vtkPCAAnalysisFilter&); // Not implemented. 00135 void operator=(const vtkPCAAnalysisFilter&); // Not implemented. 00136 00137 // Eigenvalues 00138 vtkFloatArray *Evals; 00139 00140 // Matrix where each column is an eigenvector 00141 double **evecMat2; 00142 00143 // The mean shape in a vector 00144 double *meanshape; 00145 }; 00146 00147 #endif 00148 00149