00001 00005 #ifndef Plane_h 00006 #define Plane_h 00007 00008 #include "Vector.h" 00009 #include "Primitive.h" 00010 class HitRecord; 00011 class Point; 00012 class RenderContext; 00013 00018 class Plane : public Primitive { 00019 public: 00020 Plane(Material* material, const Vector& n, const Point& point); 00021 virtual ~Plane(); 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 void normal(Vector &normal); 00029 private: 00030 Plane(const Plane&); 00031 Plane& operator=(const Plane&); 00032 00033 Vector n; 00034 double d; 00035 }; 00036 00037 #endif 00038