00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00033 #ifndef __vtkBox_h
00034 #define __vtkBox_h
00035 
00036 #include "vtkImplicitFunction.h"
00037 
00038 class VTK_COMMON_EXPORT vtkBox : public vtkImplicitFunction
00039 {
00040 public:
00041   vtkTypeRevisionMacro(vtkBox,vtkImplicitFunction);
00042   void PrintSelf(ostream& os, vtkIndent indent);
00043 
00045   static vtkBox *New();
00046 
00048 
00049   double EvaluateFunction(double x[3]);
00050   double EvaluateFunction(double x, double y, double z)
00051     {return this->vtkImplicitFunction::EvaluateFunction(x, y, z); }
00053 
00055   void EvaluateGradient(double x[3], double n[3]);
00056 
00058 
00059   vtkSetVector3Macro(XMin,double);
00060   vtkGetVector3Macro(XMin,double);
00061   vtkSetVector3Macro(XMax,double);
00062   vtkGetVector3Macro(XMax,double);
00063   void SetBounds(double xMin, double xMax,
00064                  double yMin, double yMax,
00065                  double zMin, double zMax);
00066   void SetBounds(double bounds[6]);
00067   void GetBounds(double &xMin, double &xMax,
00068                  double &yMin, double &yMax,
00069                  double &zMin, double &zMax);
00070   void GetBounds(double bounds[6]);
00072 
00074 
00081   static char IntersectBox(double bounds[6], double origin[3], double dir[3], 
00082                            double coord[3], double& t);
00084 
00085 protected:
00086   vtkBox();
00087   ~vtkBox() {}
00088 
00089   double XMin[3];
00090   double XMax[3];
00091 
00092 private:
00093   vtkBox(const vtkBox&);  
00094   void operator=(const vtkBox&);  
00095 };
00096 
00097 #endif
00098 
00099