Newer
Older
Ray::Ray(const util::Vec3& x0, const util::Vec3& arg_d, float tmin, float tmax,
bool normalize)
: x0(x0), tmin(tmin), tmax(tmax), normalize(normalize) {
if (normalize)
d = arg_d.normalize();
else
d = arg_d;
util::Vec3 Ray::operator()(float t) const {
return x0 + (d * t);
bool Ray::in_range(float t) const {
return t <= tmax && t >= tmin;
std::ostream& operator<<(std::ostream& os, const cam::Ray& rhs) {
os << "(" << rhs.x0 << " " << rhs.d << ")";
return os;