fart/util/Ray.cc
Josh Holtrop f9cf1381a6 working on shadows but they are appearing in weird places...
git-svn-id: svn://anubis/fart/trunk@185 7f9b0f55-74a9-4bce-be96-3c2cd072584d
2009-03-04 02:03:21 +00:00

39 lines
763 B
C++

#include "Ray.h"
#include <iostream>
Ray::Ray()
{
}
Ray::Ray(const Vector & origin, const Vector & direction)
{
m_origin = origin;
m_direction = direction;
m_direction.normalize();
}
/*
* return a vector for the point at distance dist
* from the ray's origin point, along its direction.
*/
Vector Ray::getPositionAt(double dist) const
{
Vector v;
v[0] = m_origin[0] + dist * m_direction[0];
v[1] = m_origin[1] + dist * m_direction[1];
v[2] = m_origin[2] + dist * m_direction[2];
return v;
}
std::ostream & operator<<(std::ostream & out, const Ray & r)
{
out << "(" << r.getOrigin() << " -> " << r.getDirection() << ")";
return out;
}
Ray Ray::shift(double amt)
{
return Ray(getPositionAt(amt), m_direction);
}