From cc0404f8c77ab14ee4c12baac57251ee2b8d3837 Mon Sep 17 00:00:00 2001
From: Benjamin Koltes <benjamin.koltes@student.ecp.fr>
Date: Mon, 21 Mar 2016 03:45:00 +0100
Subject: [PATCH] ajout des shadows

---
 scenes/shadow.py       |  24 ++++++++++++++++++++++++
 scenes/two_spheres.png | Bin 0 -> 7308 bytes
 2 files changed, 24 insertions(+)
 create mode 100644 scenes/shadow.py
 create mode 100644 scenes/two_spheres.png

diff --git a/scenes/shadow.py b/scenes/shadow.py
new file mode 100644
index 0000000..7b1038a
--- /dev/null
+++ b/scenes/shadow.py
@@ -0,0 +1,24 @@
+# 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)), .5, .4, .6, 50, 1)
+materiau_sphere_rouge = Material(Vector((1,0,0)), .4, .3, .2, 20, 1)
+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.png',affiche)
+    
diff --git a/scenes/two_spheres.png b/scenes/two_spheres.png
new file mode 100644
index 0000000000000000000000000000000000000000..fc1cbb5af975fb4411ef0fa31dea1e704954f6f4
GIT binary patch
literal 7308
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

literal 0
HcmV?d00001

-- 
GitLab