#ifndef RAY_H #define RAY_H RAY_H #include "Vector.h" #include class Ray { public: Ray(); Ray(const Vector & origin, const Vector & direction); static Ray randomRay(); const Vector & getOrigin() const { return m_origin; } const Vector & getDirection() const { return m_direction; } Vector getPositionAt(double dist) const; Vector operator[](double dist) const { return getPositionAt(dist); } Ray shift(double amt); protected: Vector m_origin; Vector m_direction; }; std::ostream & operator<<(std::ostream & out, const Ray & r); #endif