00001 #ifndef TRACEABLE_H_ 00002 #define TRACEABLE_H_ 00003 00004 #include "math/Point3D.h" 00005 #include "primitives/Axis.hpp" 00006 00007 namespace rcrt 00008 { 00009 00010 class AABB; 00011 00012 class Intersection; 00013 00014 class Ray; 00015 00016 } 00017 00018 namespace rcrt 00019 { 00020 00025 class Traceable 00026 { 00027 public: 00028 Traceable(); 00029 virtual ~Traceable(); 00030 00035 virtual Intersection intersect(Ray& r) const =0; 00036 00040 virtual const AABB& getBoundingBox() const =0; 00041 00045 virtual const Point3D& getCentroid() const =0; 00046 00053 virtual void clipPlane(Axis axis, float plane, AABB& lBox, AABB& rBox) const; 00054 }; 00055 00056 } 00057 00058 #endif /*TRACEABLE_H_*/