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