00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: $RCSfile: vtkCurvatures.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 =========================================================================*/ 00069 #ifndef __vtkCurvatures_h 00070 #define __vtkCurvatures_h 00071 00072 #include "vtkPolyDataToPolyDataFilter.h" 00073 00074 #define VTK_CURVATURE_GAUSS 0 00075 #define VTK_CURVATURE_MEAN 1 00076 00077 class VTK_GRAPHICS_EXPORT vtkCurvatures : public vtkPolyDataToPolyDataFilter 00078 { 00079 public: 00080 vtkTypeRevisionMacro(vtkCurvatures,vtkPolyDataToPolyDataFilter); 00081 void PrintSelf(ostream& os, vtkIndent indent); 00082 00084 static vtkCurvatures *New(); 00085 00087 00090 vtkSetMacro(CurvatureType,int); 00091 vtkGetMacro(CurvatureType,int); 00092 void SetCurvatureTypeToGaussian() 00093 { this->SetCurvatureType(VTK_CURVATURE_GAUSS); } 00094 void SetCurvatureTypeToMean() 00095 { this->SetCurvatureType(VTK_CURVATURE_MEAN); } 00097 00099 00101 vtkSetMacro(InvertMeanCurvature,int); 00102 vtkGetMacro(InvertMeanCurvature,int); 00103 vtkBooleanMacro(InvertMeanCurvature,int); 00105 protected: 00106 vtkCurvatures(); 00107 00108 // Usual data generation method 00109 void Execute(); 00110 00113 void GetGaussCurvature(); 00114 00115 // discrete Mean curvature (H) computation, 00116 // cf http://www-ipg.umds.ac.uk/p.batchelor/curvatures/curvatures.html 00117 void GetMeanCurvature(); 00118 00119 // Vars 00120 int CurvatureType; 00121 int InvertMeanCurvature; 00122 00123 private: 00124 vtkCurvatures(const vtkCurvatures&); // Not implemented. 00125 void operator=(const vtkCurvatures&); // Not implemented. 00126 00127 }; 00128 00129 #endif 00130 00131