VTK
|
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: vtkCurvatures.h 00005 00006 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen 00007 All rights reserved. 00008 See Copyright.txt or http://www.kitware.com/Copyright.htm for details. 00009 00010 This software is distributed WITHOUT ANY WARRANTY; without even 00011 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00012 PURPOSE. See the above copyright notice for more information. 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 // Usual data generation method 00111 int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *); 00112 00115 void GetGaussCurvature(vtkPolyData *output); 00116 00117 // discrete Mean curvature (H) computation, 00118 // cf http://www-ipg.umds.ac.uk/p.batchelor/curvatures/curvatures.html 00119 void GetMeanCurvature(vtkPolyData *output); 00120 00122 void GetMaximumCurvature(vtkPolyData *input, vtkPolyData *output); 00123 00125 void GetMinimumCurvature(vtkPolyData *input, vtkPolyData *output); 00126 00127 00128 // Vars 00129 int CurvatureType; 00130 int InvertMeanCurvature; 00131 00132 private: 00133 vtkCurvatures(const vtkCurvatures&); // Not implemented. 00134 void operator=(const vtkCurvatures&); // Not implemented. 00135 00136 }; 00137 00138 #endif 00139 00140