Ray Tracer Common Project
Image rendering program based on the ray tracing technique.
ray.hpp
1 
15 #pragma once
16 
17 #include "core/euclidian.hpp"
18 #include "core/color.hpp"
19 #include "geometry/hit.hpp"
20 #include "photon.hpp"
21 
22 namespace rt{
23 
24 class Scene;
25 class Object;
26 
33 class ray : public euclidian{
34 public:
41  ray(const vector & origin, const vector & u, int life_time = 10);
42 
50  rt::hit hit(const Scene *scene, const Object *except = 0) const;
51 
60  photon trace(const Scene *scene, int flags, double *depth = 0) const;
61 
62  static int ambientLightSampleSize();
63  static void setAmbientLightSampleSize(int ss);
64 private:
65  int _life_time;
66 
67  static int _ass;
68 };
69 
70 }
photon trace(const Scene *scene, int flags, double *depth=0) const
Definition: ray.cpp:44
rt::hit hit(const Scene *scene, const Object *except=0) const
Get all informations about the collision between this ray and an object in a scene.
Definition: ray.cpp:24
Complete scene.
Definition: scene.hpp:42
Definition: bitmap.cpp:4
const vector & u() const
The direction vector (alias for euclidian::direction())
Definition: euclidian.hpp:49
const vector & origin() const
The position vector.
Definition: euclidian.hpp:56
ray(const vector &origin, const vector &u, int life_time=10)
Create a new light ray.
Definition: ray.cpp:20
3D vector
Definition: vector.hpp:28
The result of a collistion between a Geometry and an euclidian.
Definition: hit.hpp:39
Light photon class.
Definition: photon.hpp:28
Localised vector class.
Definition: euclidian.hpp:27
Visibles objects in a scene.
Definition: object.hpp:34
Light ray.
Definition: ray.hpp:33