00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 inline
00024 Ray::Ray(Type type) :
00025 m_type(type),
00026 m_id(m_next_id++) {}
00027
00028 inline
00029 Ray::Ray(const Ray &r) :
00030 m_type(r.m_type),
00031 m_id(m_next_id++),
00032 m_origin(r.m_origin),
00033 m_direction(r.m_direction) {}
00034
00035 inline
00036 Ray::Ray(Type type, const sheep::Point3 &origin, const sheep::Vector3 &direction) :
00037 m_type(type),
00038 m_id(m_next_id++),
00039 m_origin(origin),
00040 m_direction(direction) {}
00041
00042 inline
00043 Ray::Type Ray::GetType() const {
00044 return m_type;
00045 }
00046
00047 inline
00048 int Ray::GetInvalidId() {
00049 return -1;
00050 }
00051
00052 inline
00053 int Ray::GetId() const {
00054 return m_id;
00055 }
00056
00057 inline
00058 void Ray::NewId() {
00059 m_id = m_next_id++;
00060 }
00061
00062 inline
00063 sheep::Point3 Ray::GetPointAt(sheep::Real t) const {
00064 assert(t >= 0.0);
00065
00066 return m_origin + t * m_direction;
00067 }