00001 00004 #ifndef Box_h 00005 #define Box_h 00006 00007 #include "Vector.h" 00008 #include "Primitive.h" 00009 class HitRecord; 00010 class Point; 00011 class RenderContext; 00012 00018 class Box : public Primitive { 00019 public: 00020 Box(Material* material, const Point& lo, const Point& hi); 00021 virtual ~Box(); 00022 00023 virtual void getBounds(BoundingBox& bbox) const; 00024 virtual void intersect(HitRecord& hit, const RenderContext& context, const Ray& ray) const; 00025 virtual void normal(Vector& normal, const RenderContext& context, 00026 const Point & hitpos, const Ray& ray, const HitRecord& hit) const; 00027 00028 private: 00029 Box(const Box&); 00030 Box& operator=(const Box&); 00031 00032 Point bounds[2]; 00033 }; 00034 00035 #endif 00036