#ifndef SHAPE_H #define SHAPE_H SHAPE_H #include "util/Solver.h" #include "util/Ray.h" #include "util/Vector.h" #include "util/Transform.h" #include class Shape { public: typedef std::vector IntersectList; Shape(); virtual IntersectList intersect(const Ray & ray) = 0; virtual Vector getNormalAt(const Vector & pt) = 0; void setTransform(Transform & t) { m_transform = t; m_inverse = t.getInverse(); } Transform & getTransform() { return m_transform; } void setTransparency(double t) { m_transparency = t; } double getTransparency() const { return m_transparency; } protected: Transform m_transform; Transform m_inverse; double m_transparency; }; #include "Sphere.h" #include "Plane.h" #endif