VTK
|
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: vtkImplicitPolyDataDistance.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 =========================================================================*/ 00041 #ifndef __vtkImplicitPolyDataDistance_h 00042 #define __vtkImplicitPolyDataDistance_h 00043 00044 #include "vtkImplicitFunction.h" 00045 00046 class vtkCellLocator; 00047 class vtkPolyData; 00048 00049 class VTK_GRAPHICS_EXPORT vtkImplicitPolyDataDistance : public vtkImplicitFunction 00050 { 00051 public: 00052 static vtkImplicitPolyDataDistance *New(); 00053 vtkTypeMacro(vtkImplicitPolyDataDistance,vtkImplicitFunction); 00054 void PrintSelf(ostream& os, vtkIndent indent); 00055 00057 unsigned long GetMTime(); 00058 00060 double EvaluateFunction(double x[3]); 00061 00063 void EvaluateGradient(double x[3], double g[3]); 00064 00069 void SetInput(vtkPolyData *input); 00070 00072 00073 vtkSetMacro(NoValue, double); 00074 vtkGetMacro(NoValue, double); 00076 00078 00080 vtkSetVector3Macro(NoGradient, double); 00081 vtkGetVector3Macro(NoGradient, double); 00083 00085 00086 vtkGetMacro(Tolerance, double); 00087 vtkSetMacro(Tolerance, double); 00089 00090 protected: 00091 vtkImplicitPolyDataDistance(); 00092 ~vtkImplicitPolyDataDistance(); 00093 00094 double SharedEvaluate( double x[3], double n[3] ); 00095 00096 private: 00097 vtkImplicitPolyDataDistance(const vtkImplicitPolyDataDistance&); // Not implemented. 00098 void operator=(const vtkImplicitPolyDataDistance&); // Not implemented. 00099 00100 double NoValue; 00101 double NoGradient[3]; 00102 double Tolerance; 00103 00104 vtkPolyData *Input; 00105 vtkCellLocator *Locator; 00106 00107 }; 00108 00109 #endif