diff --git a/__pycache__/raytracer.cpython-33.pyc b/__pycache__/raytracer.cpython-33.pyc
index 30618db9ed94af2cbefc1ffb44ebb596ab27ebfc..89eb08a1605bcffef331f543624caa5026ea71a1 100644
Binary files a/__pycache__/raytracer.cpython-33.pyc and b/__pycache__/raytracer.cpython-33.pyc differ
diff --git a/raytracer.py b/raytracer.py
index e6b7538254ee496b7c3c805b0bc90ac9d441a56c..2253a80bbe483f4c139fd781399802ad89c78fbb 100644
--- a/raytracer.py
+++ b/raytracer.py
@@ -8,7 +8,7 @@ class Ray:
         self.starting_point = starting_point
         self.direction = direction
         
-def trace_ray(ray, scene, camera):
+def trace_ray(ray, scene, camera, number_iterations = 20):
     intersect_list = []
     distance = float('inf')
     for o in scene.object_list:
@@ -24,7 +24,16 @@ def trace_ray(ray, scene, camera):
     for light in scene.light_list:
 #        color += phong_illuminate(light, class_intersect.position, class_intersect.normal, class_intersect.object, Vector([0,0,0]))
         color += compute_light(light, scene, class_intersect, Vector([0,0,0]))
-    color_object = class_intersect.object.material.color
+    c_x, c_y, c_z = color.coord()
+    color = Vector([max(min(c_x, 1), 0), max(0, min(c_y, 1)), max(0, min(c_z,1))])
+    if number_iterations > 0:
+        D, N = ray.direction.normalized(), class_intersect.normal
+        reflected_direction = D - 2*(D*N)*N
+        new_ray = Ray(class_intersect.position + 1e-2 * reflected_direction, reflected_direction)
+        r = class_intersect.object.material.reflection
+        trace_ray_color = trace_ray(new_ray, scene, camera, number_iterations - 1)
+        #if trace_ray_color != Vector([0,0,0]):
+        color = (1 - r)*color + r*trace_ray_color
     c_x, c_y, c_z = color.coord()
     return Vector([max(min(c_x, 1), 0), max(0, min(c_y, 1)), max(0, min(c_z,1))])
 
diff --git a/scenes/reflection.py b/scenes/reflection.py
new file mode 100644
index 0000000000000000000000000000000000000000..cde3e1bdd15015c77dbfa529760682662ad46c6d
--- /dev/null
+++ b/scenes/reflection.py
@@ -0,0 +1,23 @@
+# Show to python where to find the modules
+import sys
+sys.path.append('..')
+
+from scene import *
+from light import Spotlight
+from camera import Camera
+from raytracer import raytracer_render
+from matplotlib.image import imsave
+import sys
+
+camera = Camera(200,200,1)
+materiau_sphere_bleue = Material(Vector((0,0,1)), .7, .7, .7, 100, .7)
+materiau_sphere_rouge = Material(Vector((1,0,0)), .7, .7, .7, 100, .7)
+sphere_bleue = Sphere(Vector([0,0,3]), .8, materiau_sphere_bleue)
+sphere_rouge = Sphere(Vector([0.5,0.5,2]), .5, materiau_sphere_rouge)
+lumiere = Spotlight(Vector((1,1,0)), Vector((1,1,1)))
+scene = Scene()
+scene.add_object(sphere_bleue)
+scene.add_object(sphere_rouge)
+scene.add_light(lumiere)
+affiche = raytracer_render(camera, scene)
+imsave('two_spheres_reflection.png',affiche)
diff --git a/scenes/two_spheres.png b/scenes/two_spheres.png
index fc1cbb5af975fb4411ef0fa31dea1e704954f6f4..aca009bc7477dccc24c1f1bbbaa51f2ee7e61e1a 100644
Binary files a/scenes/two_spheres.png and b/scenes/two_spheres.png differ
diff --git a/scenes/two_spheres_reflection.png b/scenes/two_spheres_reflection.png
new file mode 100644
index 0000000000000000000000000000000000000000..3345277b857a806c034bb22e1094bef0573fbc05
Binary files /dev/null and b/scenes/two_spheres_reflection.png differ