00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00029 #ifndef __vtkQuadric_h
00030 #define __vtkQuadric_h
00031 
00032 #include "vtkImplicitFunction.h"
00033 
00034 class VTK_COMMON_EXPORT vtkQuadric : public vtkImplicitFunction
00035 {
00036 public:
00037   vtkTypeMacro(vtkQuadric,vtkImplicitFunction);
00038   void PrintSelf(ostream& os, vtkIndent indent);
00039   
00041   static vtkQuadric *New();
00042 
00044 
00045   double EvaluateFunction(double x[3]);
00046   double EvaluateFunction(double x, double y, double z)
00047     {return this->vtkImplicitFunction::EvaluateFunction(x, y, z); } ;
00049 
00051   void EvaluateGradient(double x[3], double g[3]);
00052   
00054 
00055   void SetCoefficients(double a[10]);
00056   void SetCoefficients(double a0, double a1, double a2, double a3, double a4, 
00057                        double a5, double a6, double a7, double a8, double a9);
00058   vtkGetVectorMacro(Coefficients,double,10);
00060 
00061 protected:
00062   vtkQuadric();
00063   ~vtkQuadric() {};
00064 
00065   double Coefficients[10];
00066 
00067 private:
00068   vtkQuadric(const vtkQuadric&);  
00069   void operator=(const vtkQuadric&);  
00070 };
00071 
00072 #endif
00073 
00074