#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 "main/Material.h" #include "util/refptr.h" #include class Shape { public: typedef std::vector IntersectList; Shape(); virtual ~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; } void setMaterial(refptr material) { m_material = material; } refptr getMaterial() const { return m_material; } protected: Transform m_transform; Transform m_inverse; double m_transparency; refptr m_material; }; #include "Box.h" #include "Cyl.h" #include "Plane.h" #include "Sphere.h" #endif