00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00065 #ifndef __vtkCurvatures_h
00066 #define __vtkCurvatures_h
00067 
00068 #include "vtkPolyDataAlgorithm.h"
00069 
00070 #define VTK_CURVATURE_GAUSS 0
00071 #define VTK_CURVATURE_MEAN  1
00072 #define VTK_CURVATURE_MAXIMUM 2
00073 #define VTK_CURVATURE_MINIMUM 3
00074 
00075 class VTK_GRAPHICS_EXPORT vtkCurvatures : public vtkPolyDataAlgorithm
00076 {
00077 public:
00078   vtkTypeMacro(vtkCurvatures,vtkPolyDataAlgorithm);
00079   void PrintSelf(ostream& os, vtkIndent indent);
00080 
00082   static vtkCurvatures *New();
00083 
00085 
00088   vtkSetMacro(CurvatureType,int);
00089   vtkGetMacro(CurvatureType,int);
00090   void SetCurvatureTypeToGaussian()
00091   { this->SetCurvatureType(VTK_CURVATURE_GAUSS); }
00092   void SetCurvatureTypeToMean()
00093   { this->SetCurvatureType(VTK_CURVATURE_MEAN); }
00094   void SetCurvatureTypeToMaximum()
00095   { this->SetCurvatureType(VTK_CURVATURE_MAXIMUM); }
00096   void SetCurvatureTypeToMinimum()
00097   { this->SetCurvatureType(VTK_CURVATURE_MINIMUM); }
00099 
00101 
00103   vtkSetMacro(InvertMeanCurvature,int);
00104   vtkGetMacro(InvertMeanCurvature,int);
00105   vtkBooleanMacro(InvertMeanCurvature,int);
00106 protected:
00107   vtkCurvatures();
00109 
00110   
00111   int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *);
00112 
00115   void GetGaussCurvature(vtkPolyData *output);
00116 
00117   
00118   
00119   void GetMeanCurvature(vtkPolyData *output);
00120   
00122   void GetMaximumCurvature(vtkPolyData *input, vtkPolyData *output);
00123   
00125   void GetMinimumCurvature(vtkPolyData *input, vtkPolyData *output);
00126   
00127 
00128   
00129   int CurvatureType;
00130   int InvertMeanCurvature;
00131 
00132 private:
00133   vtkCurvatures(const vtkCurvatures&);  
00134   void operator=(const vtkCurvatures&);  
00135 
00136 };
00137 
00138 #endif
00139 
00140