29 lines
643 B
C++
29 lines
643 B
C++
|
|
#ifndef RAY_H
|
|
#define RAY_H RAY_H
|
|
|
|
#include "Vector.h"
|
|
#include <iostream>
|
|
|
|
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
|
|
|