gKit2 light
ray.h
1 
2 #ifndef RAY_H
3 #define RAY_H
4 
5 #include <cfloat>
6 
7 #include "vec.h"
8 #include "color.h"
9 
10 
12 struct Ray
13 {
14  Ray( ) : origin(), direction() {}
15  Ray( const Point& o, const Point& e ) : origin(o), direction( normalize(Vector(o, e)) ) {}
16 
17  Point origin;
18  Vector direction;
19 };
20 
22 Ray make_ray( const Point& o, const Point& e );
23 
25 Ray reflect( const Ray& ray, const Point& p, const Vector& normal );
26 
27 float fresnel( const Ray& ray, const Point& p, const Vector& n, const float ir );
28 
29 bool fresnel_refract( const Ray& ray, const Point& p, const Vector& n, const float ir );
30 Ray refract( const Ray& ray, const Point& p, const Vector& n, const float ir );
31 
33 struct Hit
34 {
35  Hit( ) : p(), n(), color(), t(FLT_MAX), hit(false) {}
36 
37  Point p;
40  float t;
41  bool hit;
42 };
43 
44 #endif
Point p
position
Definition: ray.h:37
Vector normalize(const Vector &v)
renvoie un vecteur unitaire / longueur == 1.
Definition: vec.cpp:79
representation d'une couleur (rgba) transparente ou opaque.
Definition: color.h:13
Color color
couleur de la surface au point d'intersection
Definition: ray.h:39
representation d'un vecteur 3d.
Definition: vec.h:42
float t
abscisse : p= o + t.d
Definition: ray.h:40
representation d'un point d'intersection.
Definition: ray.h:33
Vector n
normale de la surface au point d'intersection
Definition: ray.h:38
representation d'un rayon.
Definition: ray.h:12
representation d'un point 3d.
Definition: vec.h:19