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