1 #pragma once 2 3 #ifndef Y_RAY_H 4 #define Y_RAY_H 5 6 #include <yafray_constants.h> 7 #include "vector3d.h" 8 9 __BEGIN_YAFRAY 10 11 class ray_t 12 { 13 public: ray_t()14 ray_t(): tmin(0), tmax(-1.0), time(0.0) {} 15 ray_t(const point3d_t &f, const vector3d_t &d, float start=0.0, float end=-1.0, float ftime=0.0): from(f)16 from(f), dir(d), tmin(start), tmax(end), time(ftime) { } 17 18 point3d_t from; 19 vector3d_t dir; 20 mutable float tmin, tmax; 21 float time; //!< relative frame time (values between [0;1]) at which ray was generated 22 }; 23 24 class diffRay_t: public ray_t 25 { 26 public: diffRay_t()27 diffRay_t(): ray_t(), hasDifferentials(false) {} diffRay_t(const ray_t & r)28 diffRay_t(const ray_t &r): ray_t(r), hasDifferentials(false) {} 29 diffRay_t(const point3d_t &f, const vector3d_t &d, float start=0.0, float end=-1.0, float ftime=0.0): ray_t(f,d,start,end,ftime)30 ray_t(f, d, start, end, ftime), hasDifferentials(false) {} 31 bool hasDifferentials; 32 point3d_t xfrom, yfrom; 33 vector3d_t xdir, ydir; 34 }; 35 36 __END_YAFRAY 37 38 #endif //Y_RAY_H 39