diff --git a/__pycache__/camera.cpython-33.pyc b/__pycache__/camera.cpython-33.pyc index 9162902ab8f1d7ebd4d0c8cfd5ee667372bea14a..ca143181686fca63946a8bec2a6ef5debcab1765 100644 Binary files a/__pycache__/camera.cpython-33.pyc and b/__pycache__/camera.cpython-33.pyc differ diff --git a/__pycache__/light.cpython-33.pyc b/__pycache__/light.cpython-33.pyc index c77724b75049cb6a0d785ea1e3d97504f7b9d1f0..0a129bd8d723336231ef404296c56673c5f5f562 100644 Binary files a/__pycache__/light.cpython-33.pyc and b/__pycache__/light.cpython-33.pyc differ diff --git a/camera.py b/camera.py index 083f32bdf7603e87e5d8f6ec2fda3564ed537ed4..0e110787d06ef36a347e080f26a8926fc61bcb77 100644 --- a/camera.py +++ b/camera.py @@ -3,11 +3,25 @@ from raytracer import Ray class Camera: def __init__(self, image_nrows, image_ncols, distance_focale): + """__init__(self, image_nrows:entier, image_ncols:entier, distance_focale:entier):Camera + + Définit un objet Caméra qui correspondra à l'image que l'on génère à la fin. + + @image_nrows: nombre entier : correspond à la résolution verticale de l'image + @image_ncols: nombre entier : correspond à la résolution horizontale de l'image + @distance_focale: nombre entier : correspond au zoom de l'image""" self.image_nrows = image_nrows self.image_ncols = image_ncols self.focal_length = distance_focale def ray_at(self, row, col): + """ray_at(self, row:entier, col:entier):Ray + + Calcul le rayon qui part de la caméra vers le point de coordonnée (row, col) de la grille de la caméra + + @row: entier + @col: entier + @return Ray""" n = self.image_nrows//2 x = (n-row)/n n = self.image_ncols//2 diff --git a/intersection.py b/intersection.py index 13b87b9e5aa80790b5d224de495ecc8e30656d05..5d633562152bc646644d362bfd1c1323a3dc2270 100644 --- a/intersection.py +++ b/intersection.py @@ -1,17 +1,32 @@ from operation_vector import * from scene import * -from math import atan, pi class Intersection: def __init__(self, position, normal, object): + """"__init__(self, position: Vector, normal: Vector, object: Triangle or Sphere):Intersection + + Définit l'objet Intersection composé d'un vecteur position, d'un vecteur normal et d'un objet + + @position: Vector : position dans l'espace du point d'intersection + @normal: Vector : vecteur normal à la surface de l'objet au point de contact + @object: object : objet de contact + """ self.position = position self.normal = normal self.object = object def intersect(objet, ray): + """intersect(objet:objet, ray:Ray):Intersection/None + + Calcul le point d'intersection entre un rayon (ray) et un objet (objet) et renvoie ce point d'intersection s'il existe et renvoie None sinon + + @objet: objet + @ray: Ray + @return None ou Intersection""" + o = ray.starting_point l = ray.direction - if type(objet) is Sphere: + if type(objet) is Sphere: # teste l'intesection quand l'objet est une sphère centre = objet.centre r = objet.radius a = l*l @@ -19,54 +34,74 @@ def intersect(objet, ray): b = 2*(l*diff) c = diff*diff - r**2 delta = b**2 - 4*a*c - if delta > 0: + if delta > 0: # il y a deux intersections avec la droite dont le vecteur directeur est le ray et la sphère intersection = [(-b - delta**0.5)/(2*a), (-b + delta**0.5)/(2*a)] - elif delta == 0: + elif delta == 0: # il n'y a qu'une intersection (tangente) intersection = [-b/(2*a)] - else: + else: # il n'y a pas d'intersection intersection = [] - if len(intersection) == 0 or max(intersection) < 0: + if len(intersection) == 0 or max(intersection) < 0: # s'il n'y a pas d'intersection ou que les points d'intersection sont du mauvais côté de la demi-droite return None - elif min(intersection) < 0: + elif min(intersection) < 0: # s'il y a une intersection du bon côté et l'autre du mauvais côté position = o + l*max(intersection) - else: + else: # si les deux intersections sont sur la bonne demi-droite position = o + l*min(intersection) if diff.norm() >= r: - return Intersection(position, (position - centre).normalized(), objet) + return Intersection(position, (position - centre).normalized(), objet) # le point de départ est à l'extérieure de la sphère else: - return Intersection(position, -(position - centre).normalized(), objet) + return Intersection(position, -(position - centre).normalized(), objet) # s'il est à l'intérieur - elif type(objet) is Triangle: + elif type(objet) is Triangle: # teste l'intesection quand l'objet est un triangle i = (objet.v1 - objet.v0).normalized() j = (objet.v2 - objet.v0).normalized() n = (i^j).normalized() - if l*n == 0: + if l*n == 0: # si le vecteur directeur du rayon est orthogonal à la normale au plan du triangle return None px = ((objet.v0 - o)*n)/(l*n) - p = o + px*l + p = o + px*l # intersection du rayon et du plan contenant le triangle - if not(pointInTriangle(p, objet.v0, objet.v1, objet.v2)): + if not(pointInTriangle(p, objet.v0, objet.v1, objet.v2)): # si p est en dehors du triangle return None normal = -n*((l*n)/abs(l*n)) return Intersection(p, normal, objet) else: - print('c',end = ' ') + print('c',end = ' ') # si l'objet est inconnu -def sameSide(p1, p2, a,b): +def sameSide(p1, p2, a, b): + """sameSide(p1: Vector, p2: Vector, a: Vector, b: Vector): bool + + Teste si p1 et p2 sont du même côté de la droite [a, b] + + @p1: Vector + @p2: Vector + @a: Vector + @b: Vector + @return bool""" + cp1 = (b-a)^(p1-a) cp2 = (b-a)^(p2-a) + if cp1*cp2 >= 0: return True else: return False def pointInTriangle(p, a, b, c): + """pointInTriangle(p: Vector, a: Vector, b: Vector, c: Vector): bool + + Teste si p est dans le triangle abc + + @p: Vector + @a: Vector + @b: Vector + @return boo""" + if sameSide(p, a, b, c) and sameSide(p, b, a, c) and sameSide(p, c, a, b): return True else: diff --git a/light.py b/light.py index 9fd5fd25c60e8702a5c83e26930b085d0c3aeeed..eff594556f95e2a4c0604724beef0d4f1639b219 100644 --- a/light.py +++ b/light.py @@ -1,9 +1,25 @@ class Spotlight: def __init__(self, position, color): + """__init__(self, position: Vector, color: Vector) + + Définit une source de lumière + + @position: Vector : position de la source de lumière + @color: Vector : couleur de la source de lumière""" self.position = position self.color = color def phong_illuminate(light, position, normal, object, viewer): + """phong_illuminate(light: Spotlight, position: Vector, normal: Vector, object, viewer: Vector): Vector + + Calcule la lumière vu par l'observateur "viewer" au point de coordonnées "position" produite par la source "light" sur l'objet "objet" de normal "normal" + + @light: Spotlight : source de lumière + @position: Vector : position de l'objet à laquelle on cherche la couleur + @normal: Vector : normal à l + @objet + @viewer: Vector : coordonnées de l'observateur + @return: Vector : couleur perçue par le "viewer" """ ks = object.material.specular kd = object.material.diffuse alpha = object.material.shininess @@ -16,13 +32,17 @@ def phong_illuminate(light, position, normal, object, viewer): i = ((kd*(max(L*N, 0)) + ks*(max(0, R*V))**alpha)) if i < 0: i = 0 -# print(-1) -# elif i > 1: -# i = 1 -# print(1) return i*(light.color ** object.material.color) def ambiant_illuminate(position, object): + """ambiant_illuminate(position: Vector, object: objet): Vector + + Calcule la lumière ambiante créée par l'objet + + @position : ne serd à rien ici + @objet + @return: Vector : couleur ambiante""" + return object.material.ambiant*object.material.color diff --git a/scenes/__pycache__/multiprocessing.cpython-33.pyc b/scenes/__pycache__/multiprocessing.cpython-33.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7645044adc3b046eaaed0994c6f051d98fc9fd62 Binary files /dev/null and b/scenes/__pycache__/multiprocessing.cpython-33.pyc differ diff --git a/scenes/three_triangles.py b/scenes/three_triangles.py new file mode 100644 index 0000000000000000000000000000000000000000..b51df60f2dea674c9793f599b3799110b1f30a53 --- /dev/null +++ b/scenes/three_triangles.py @@ -0,0 +1,52 @@ +# Show to python where to find the modules +import sys +sys.path.append('..') + +from camera import Camera +from scene import * +from light import * +from raytracer import * +import numpy as np +from matplotlib.image import imsave +import itertools +import multiprocessing + +def trace_ray_mutliprocess(t): + (i, j, camera, scene, nb_reflexion) = t + return np.array(trace_ray(camera.ray_at(i, j), scene, camera, nb_reflexion).coord()) + +(nx, ny, nb_reflexion) = (200, 200, 20) +camera = Camera(nx, ny, 1) +materiau_sphere_bleue = Material(Vector([0,0,1]), .5, .5, .5, 1000,0) +materiau_sphere_verte = Material(Vector([0,1,0]), .5, .5, .5, 1000, 0) +materiau_sphere_rouge = Material(Vector([1,0,0]), .5, .5, .5, 1000, 0) +materiau_sphere_blanche = Material(Vector([1,1,1]), 1, 1, 1, 20, 0) +c = (8+2*(3**.5))**.5 +l = (c**2 - 4)**.5 +v0 = Vector([0,2,2+l]) +v1 = Vector([3**.5,-1,2+l]) +v2 = Vector([-3**.5,-1,2+l]) +v3 = Vector([0,0,2]) +triangle_rouge = Triangle(v0,v1,v3,materiau_sphere_rouge) +triangle_vert = Triangle(v1,v2,v3,materiau_sphere_verte) +triangle_bleu = Triangle(v0,v2,v3,materiau_sphere_bleue) +#triangle_blanc = Triangle(v0,v2,v3,materiau_sphere_blanche) +scene = Scene() +lumiere = Spotlight(Vector([0,0,0]), Vector([1,1,1])) +scene.add_object(triangle_vert) +scene.add_object(triangle_bleu) +scene.add_object(triangle_rouge) +#scene.add_object(triangle_blanc) +scene.add_light(lumiere) +affiche = np.zeros((nx, ny, 3)) +rows = list(range(nx)) +columns = list(range(ny)) +carte = list(itertools.product(rows, columns, [camera], [scene], [nb_reflexion])) + +if __name__ == '__main__': + pool = multiprocessing.Pool(4) + affiche_map = pool.map(trace_ray_mutliprocess, carte) + pool.close() + pool.join() + affiche = np.array(affiche_map).reshape(nx, ny, 3) + imsave('triangle.png', affiche) diff --git a/scripts/One_sphere blue/one_sphere.wmv b/scripts/One_sphere blue/one_sphere.wmv new file mode 100644 index 0000000000000000000000000000000000000000..7eacf064f0d0e66a2d3eb1be510d9cb49101fb82 Binary files /dev/null and b/scripts/One_sphere blue/one_sphere.wmv differ diff --git a/scripts/One_sphere blue/one_sphere_0.png b/scripts/One_sphere blue/one_sphere_0.png new file mode 100644 index 0000000000000000000000000000000000000000..69796b92e5285fa51e17e99a1289bd539d89b09b Binary files /dev/null and b/scripts/One_sphere blue/one_sphere_0.png differ diff --git a/scripts/One_sphere blue/one_sphere_1.png b/scripts/One_sphere blue/one_sphere_1.png new file mode 100644 index 0000000000000000000000000000000000000000..8da1f245887a624e00f8d9ea5df8631e16938cc4 Binary files /dev/null and b/scripts/One_sphere blue/one_sphere_1.png differ diff --git a/scripts/One_sphere blue/one_sphere_10.png b/scripts/One_sphere blue/one_sphere_10.png new file mode 100644 index 0000000000000000000000000000000000000000..73a32950a319bef19219177bfa1879f9a0d962cc Binary files /dev/null and b/scripts/One_sphere blue/one_sphere_10.png differ diff --git a/scripts/One_sphere blue/one_sphere_11.png b/scripts/One_sphere blue/one_sphere_11.png new file mode 100644 index 0000000000000000000000000000000000000000..6bef26ca58f0d97752d1e452a5ae9c124a592633 Binary files /dev/null and b/scripts/One_sphere blue/one_sphere_11.png differ diff --git a/scripts/One_sphere blue/one_sphere_12.png b/scripts/One_sphere blue/one_sphere_12.png new file mode 100644 index 0000000000000000000000000000000000000000..2d0730142eefd57f9f0080283309f87bfc65ec23 Binary files /dev/null and b/scripts/One_sphere blue/one_sphere_12.png differ diff --git a/scripts/One_sphere blue/one_sphere_13.png b/scripts/One_sphere blue/one_sphere_13.png new file mode 100644 index 0000000000000000000000000000000000000000..7ad2f34e76762f7d78fa618011cc0f6ea5096dfc Binary files /dev/null and b/scripts/One_sphere blue/one_sphere_13.png differ diff --git a/scripts/One_sphere blue/one_sphere_14.png b/scripts/One_sphere blue/one_sphere_14.png new file mode 100644 index 0000000000000000000000000000000000000000..dca03fa9579460e0ebf8446992d465efdcf0beea Binary files /dev/null and b/scripts/One_sphere blue/one_sphere_14.png differ diff --git a/scripts/One_sphere blue/one_sphere_15.png b/scripts/One_sphere blue/one_sphere_15.png new file mode 100644 index 0000000000000000000000000000000000000000..8c6fcc7ceec2b227cea6d9c5255d1d32d96e3a13 Binary files /dev/null and b/scripts/One_sphere blue/one_sphere_15.png differ diff --git a/scripts/One_sphere blue/one_sphere_16.png b/scripts/One_sphere blue/one_sphere_16.png new file mode 100644 index 0000000000000000000000000000000000000000..e390986f45f868749fed5f2588129e36e5b7648e Binary files /dev/null and b/scripts/One_sphere blue/one_sphere_16.png differ diff --git a/scripts/One_sphere blue/one_sphere_17.png b/scripts/One_sphere blue/one_sphere_17.png new file mode 100644 index 0000000000000000000000000000000000000000..8afd0f9c17c33fd652b280ee181d3c86670d179f Binary files /dev/null and b/scripts/One_sphere blue/one_sphere_17.png differ diff --git a/scripts/One_sphere blue/one_sphere_18.png b/scripts/One_sphere blue/one_sphere_18.png new file mode 100644 index 0000000000000000000000000000000000000000..69796b92e5285fa51e17e99a1289bd539d89b09b Binary files /dev/null and b/scripts/One_sphere blue/one_sphere_18.png differ diff --git a/scripts/One_sphere blue/one_sphere_19.png b/scripts/One_sphere blue/one_sphere_19.png new file mode 100644 index 0000000000000000000000000000000000000000..8da1f245887a624e00f8d9ea5df8631e16938cc4 Binary files /dev/null and b/scripts/One_sphere blue/one_sphere_19.png differ diff --git a/scripts/One_sphere blue/one_sphere_2.png b/scripts/One_sphere blue/one_sphere_2.png new file mode 100644 index 0000000000000000000000000000000000000000..51918d04c54084c2df865d90eee76edf87b546b1 Binary files /dev/null and b/scripts/One_sphere blue/one_sphere_2.png differ diff --git a/scripts/One_sphere blue/one_sphere_20.png b/scripts/One_sphere blue/one_sphere_20.png new file mode 100644 index 0000000000000000000000000000000000000000..51918d04c54084c2df865d90eee76edf87b546b1 Binary files /dev/null and b/scripts/One_sphere blue/one_sphere_20.png differ diff --git a/scripts/One_sphere blue/one_sphere_21.png b/scripts/One_sphere blue/one_sphere_21.png new file mode 100644 index 0000000000000000000000000000000000000000..c4872118fcb7e1eb80e6f4ce336ece1f40cf9205 Binary files /dev/null and b/scripts/One_sphere blue/one_sphere_21.png differ diff --git a/scripts/One_sphere blue/one_sphere_22.png b/scripts/One_sphere blue/one_sphere_22.png new file mode 100644 index 0000000000000000000000000000000000000000..a87529f204b59d1a2b92d215299b0b0f3ab1a65b Binary files /dev/null and b/scripts/One_sphere blue/one_sphere_22.png differ diff --git a/scripts/One_sphere blue/one_sphere_23.png b/scripts/One_sphere blue/one_sphere_23.png new file mode 100644 index 0000000000000000000000000000000000000000..c0b7e90805217eb2b1433570bb27aa9440c88949 Binary files /dev/null and b/scripts/One_sphere blue/one_sphere_23.png differ diff --git a/scripts/One_sphere blue/one_sphere_24.png b/scripts/One_sphere blue/one_sphere_24.png new file mode 100644 index 0000000000000000000000000000000000000000..4532b18b69cb337b270a2a75707496c59a6541d8 Binary files /dev/null and b/scripts/One_sphere blue/one_sphere_24.png differ diff --git a/scripts/One_sphere blue/one_sphere_25.png b/scripts/One_sphere blue/one_sphere_25.png new file mode 100644 index 0000000000000000000000000000000000000000..f15632db4a500439417310c441dac26572e1a9a2 Binary files /dev/null and b/scripts/One_sphere blue/one_sphere_25.png differ diff --git a/scripts/One_sphere blue/one_sphere_26.png b/scripts/One_sphere blue/one_sphere_26.png new file mode 100644 index 0000000000000000000000000000000000000000..9bfc64ae7b3294adeb6414d740ed2789af61c066 Binary files /dev/null and b/scripts/One_sphere blue/one_sphere_26.png differ diff --git a/scripts/One_sphere blue/one_sphere_27.png b/scripts/One_sphere blue/one_sphere_27.png new file mode 100644 index 0000000000000000000000000000000000000000..8897b8da77ca08fdfcd2f8d3175ce7626d292fb8 Binary files /dev/null and b/scripts/One_sphere blue/one_sphere_27.png differ diff --git a/scripts/One_sphere blue/one_sphere_28.png b/scripts/One_sphere blue/one_sphere_28.png new file mode 100644 index 0000000000000000000000000000000000000000..73a32950a319bef19219177bfa1879f9a0d962cc Binary files /dev/null and b/scripts/One_sphere blue/one_sphere_28.png differ diff --git a/scripts/One_sphere blue/one_sphere_29.png b/scripts/One_sphere blue/one_sphere_29.png new file mode 100644 index 0000000000000000000000000000000000000000..6bef26ca58f0d97752d1e452a5ae9c124a592633 Binary files /dev/null and b/scripts/One_sphere blue/one_sphere_29.png differ diff --git a/scripts/One_sphere blue/one_sphere_3.png b/scripts/One_sphere blue/one_sphere_3.png new file mode 100644 index 0000000000000000000000000000000000000000..c4872118fcb7e1eb80e6f4ce336ece1f40cf9205 Binary files /dev/null and b/scripts/One_sphere blue/one_sphere_3.png differ diff --git a/scripts/One_sphere blue/one_sphere_30.png b/scripts/One_sphere blue/one_sphere_30.png new file mode 100644 index 0000000000000000000000000000000000000000..2d0730142eefd57f9f0080283309f87bfc65ec23 Binary files /dev/null and b/scripts/One_sphere blue/one_sphere_30.png differ diff --git a/scripts/One_sphere blue/one_sphere_31.png b/scripts/One_sphere blue/one_sphere_31.png new file mode 100644 index 0000000000000000000000000000000000000000..7ad2f34e76762f7d78fa618011cc0f6ea5096dfc Binary files /dev/null and b/scripts/One_sphere blue/one_sphere_31.png differ diff --git a/scripts/One_sphere blue/one_sphere_32.png b/scripts/One_sphere blue/one_sphere_32.png new file mode 100644 index 0000000000000000000000000000000000000000..dca03fa9579460e0ebf8446992d465efdcf0beea Binary files /dev/null and b/scripts/One_sphere blue/one_sphere_32.png differ diff --git a/scripts/One_sphere blue/one_sphere_33.png b/scripts/One_sphere blue/one_sphere_33.png new file mode 100644 index 0000000000000000000000000000000000000000..8c6fcc7ceec2b227cea6d9c5255d1d32d96e3a13 Binary files /dev/null and b/scripts/One_sphere blue/one_sphere_33.png differ diff --git a/scripts/One_sphere blue/one_sphere_34.png b/scripts/One_sphere blue/one_sphere_34.png new file mode 100644 index 0000000000000000000000000000000000000000..e390986f45f868749fed5f2588129e36e5b7648e Binary files /dev/null and b/scripts/One_sphere blue/one_sphere_34.png differ diff --git a/scripts/One_sphere blue/one_sphere_35.png b/scripts/One_sphere blue/one_sphere_35.png new file mode 100644 index 0000000000000000000000000000000000000000..8afd0f9c17c33fd652b280ee181d3c86670d179f Binary files /dev/null and b/scripts/One_sphere blue/one_sphere_35.png differ diff --git a/scripts/One_sphere blue/one_sphere_4.png b/scripts/One_sphere blue/one_sphere_4.png new file mode 100644 index 0000000000000000000000000000000000000000..a87529f204b59d1a2b92d215299b0b0f3ab1a65b Binary files /dev/null and b/scripts/One_sphere blue/one_sphere_4.png differ diff --git a/scripts/One_sphere blue/one_sphere_5.png b/scripts/One_sphere blue/one_sphere_5.png new file mode 100644 index 0000000000000000000000000000000000000000..c0b7e90805217eb2b1433570bb27aa9440c88949 Binary files /dev/null and b/scripts/One_sphere blue/one_sphere_5.png differ diff --git a/scripts/One_sphere blue/one_sphere_6.png b/scripts/One_sphere blue/one_sphere_6.png new file mode 100644 index 0000000000000000000000000000000000000000..4532b18b69cb337b270a2a75707496c59a6541d8 Binary files /dev/null and b/scripts/One_sphere blue/one_sphere_6.png differ diff --git a/scripts/One_sphere blue/one_sphere_7.png b/scripts/One_sphere blue/one_sphere_7.png new file mode 100644 index 0000000000000000000000000000000000000000..f15632db4a500439417310c441dac26572e1a9a2 Binary files /dev/null and b/scripts/One_sphere blue/one_sphere_7.png differ diff --git a/scripts/One_sphere blue/one_sphere_8.png b/scripts/One_sphere blue/one_sphere_8.png new file mode 100644 index 0000000000000000000000000000000000000000..9bfc64ae7b3294adeb6414d740ed2789af61c066 Binary files /dev/null and b/scripts/One_sphere blue/one_sphere_8.png differ diff --git a/scripts/One_sphere blue/one_sphere_9.png b/scripts/One_sphere blue/one_sphere_9.png new file mode 100644 index 0000000000000000000000000000000000000000..8897b8da77ca08fdfcd2f8d3175ce7626d292fb8 Binary files /dev/null and b/scripts/One_sphere blue/one_sphere_9.png differ diff --git a/scripts/Two_spheres red & blue/two_spheres.wmv b/scripts/Two_spheres red & blue/two_spheres.wmv new file mode 100644 index 0000000000000000000000000000000000000000..02fa7a88a733053dd9970f87c8275e33e208a3a0 Binary files /dev/null and b/scripts/Two_spheres red & blue/two_spheres.wmv differ diff --git a/scripts/Two_spheres red & blue/two_spheres_0.png b/scripts/Two_spheres red & blue/two_spheres_0.png new file mode 100644 index 0000000000000000000000000000000000000000..98557158704d4d2c73007c90f7343037efdb96fa Binary files /dev/null and b/scripts/Two_spheres red & blue/two_spheres_0.png differ diff --git a/scripts/Two_spheres red & blue/two_spheres_1.png b/scripts/Two_spheres red & blue/two_spheres_1.png new file mode 100644 index 0000000000000000000000000000000000000000..93faa4c245f47442387427af66e12329a7f0f7c2 Binary files /dev/null and b/scripts/Two_spheres red & blue/two_spheres_1.png differ diff --git a/scripts/Two_spheres red & blue/two_spheres_10.png b/scripts/Two_spheres red & blue/two_spheres_10.png new file mode 100644 index 0000000000000000000000000000000000000000..3c61c6fb298f6d908becc61777843e384185a3b1 Binary files /dev/null and b/scripts/Two_spheres red & blue/two_spheres_10.png differ diff --git a/scripts/Two_spheres red & blue/two_spheres_11.png b/scripts/Two_spheres red & blue/two_spheres_11.png new file mode 100644 index 0000000000000000000000000000000000000000..204e53435b9dce25818cfd13be2fc3499f108433 Binary files /dev/null and b/scripts/Two_spheres red & blue/two_spheres_11.png differ diff --git a/scripts/Two_spheres red & blue/two_spheres_12.png b/scripts/Two_spheres red & blue/two_spheres_12.png new file mode 100644 index 0000000000000000000000000000000000000000..1f6df45f1d28685fa568f186965b9c06d997f9e8 Binary files /dev/null and b/scripts/Two_spheres red & blue/two_spheres_12.png differ diff --git a/scripts/Two_spheres red & blue/two_spheres_13.png b/scripts/Two_spheres red & blue/two_spheres_13.png new file mode 100644 index 0000000000000000000000000000000000000000..c14fbb48338f569aad257656660e312838b2ecdd Binary files /dev/null and b/scripts/Two_spheres red & blue/two_spheres_13.png differ diff --git a/scripts/Two_spheres red & blue/two_spheres_14.png b/scripts/Two_spheres red & blue/two_spheres_14.png new file mode 100644 index 0000000000000000000000000000000000000000..f38c91870628f5e0bcbabf8ae65a66a85c3002e8 Binary files /dev/null and b/scripts/Two_spheres red & blue/two_spheres_14.png differ diff --git a/scripts/Two_spheres red & blue/two_spheres_15.png b/scripts/Two_spheres red & blue/two_spheres_15.png new file mode 100644 index 0000000000000000000000000000000000000000..e5ea36251b11d67d87c1011d1628681290d19954 Binary files /dev/null and b/scripts/Two_spheres red & blue/two_spheres_15.png differ diff --git a/scripts/Two_spheres red & blue/two_spheres_16.png b/scripts/Two_spheres red & blue/two_spheres_16.png new file mode 100644 index 0000000000000000000000000000000000000000..8d5799e99a302c8350c87e5a29fa276f4d220d50 Binary files /dev/null and b/scripts/Two_spheres red & blue/two_spheres_16.png differ diff --git a/scripts/Two_spheres red & blue/two_spheres_17.png b/scripts/Two_spheres red & blue/two_spheres_17.png new file mode 100644 index 0000000000000000000000000000000000000000..5aea411d5d120c81b20cf05f1950f3dda1c78923 Binary files /dev/null and b/scripts/Two_spheres red & blue/two_spheres_17.png differ diff --git a/scripts/Two_spheres red & blue/two_spheres_18.png b/scripts/Two_spheres red & blue/two_spheres_18.png new file mode 100644 index 0000000000000000000000000000000000000000..5a911cf91dab51fbf8762fbf8b0946b59b10bda6 Binary files /dev/null and b/scripts/Two_spheres red & blue/two_spheres_18.png differ diff --git a/scripts/Two_spheres red & blue/two_spheres_19.png b/scripts/Two_spheres red & blue/two_spheres_19.png new file mode 100644 index 0000000000000000000000000000000000000000..47de1090ad6f408f7d109a2b0b6e5f4a208ee2ac Binary files /dev/null and b/scripts/Two_spheres red & blue/two_spheres_19.png differ diff --git a/scripts/Two_spheres red & blue/two_spheres_2.png b/scripts/Two_spheres red & blue/two_spheres_2.png new file mode 100644 index 0000000000000000000000000000000000000000..e1c30b468004d44fa05adf3ac4ac1cf8f856498c Binary files /dev/null and b/scripts/Two_spheres red & blue/two_spheres_2.png differ diff --git a/scripts/Two_spheres red & blue/two_spheres_20.png b/scripts/Two_spheres red & blue/two_spheres_20.png new file mode 100644 index 0000000000000000000000000000000000000000..65567d5d0977bd75f71a0b5bb7ee35c6783053c1 Binary files /dev/null and b/scripts/Two_spheres red & blue/two_spheres_20.png differ diff --git a/scripts/Two_spheres red & blue/two_spheres_21.png b/scripts/Two_spheres red & blue/two_spheres_21.png new file mode 100644 index 0000000000000000000000000000000000000000..913eff8baf7d3d86026ecf19b89a276a78b6a85b Binary files /dev/null and b/scripts/Two_spheres red & blue/two_spheres_21.png differ diff --git a/scripts/Two_spheres red & blue/two_spheres_22.png b/scripts/Two_spheres red & blue/two_spheres_22.png new file mode 100644 index 0000000000000000000000000000000000000000..96b5b1aa0a5553b5053e254737ac85602cc40a6c Binary files /dev/null and b/scripts/Two_spheres red & blue/two_spheres_22.png differ diff --git a/scripts/Two_spheres red & blue/two_spheres_23.png b/scripts/Two_spheres red & blue/two_spheres_23.png new file mode 100644 index 0000000000000000000000000000000000000000..4739f1f31aebddb4f474afb8430b8ece249381d5 Binary files /dev/null and b/scripts/Two_spheres red & blue/two_spheres_23.png differ diff --git a/scripts/Two_spheres red & blue/two_spheres_24.png b/scripts/Two_spheres red & blue/two_spheres_24.png new file mode 100644 index 0000000000000000000000000000000000000000..584ece0a052c3b2a7537c19f8f20a14e78e90a99 Binary files /dev/null and b/scripts/Two_spheres red & blue/two_spheres_24.png differ diff --git a/scripts/Two_spheres red & blue/two_spheres_25.png b/scripts/Two_spheres red & blue/two_spheres_25.png new file mode 100644 index 0000000000000000000000000000000000000000..9dc0263ae9cd3bbb119a26b1ae757711c50b6590 Binary files /dev/null and b/scripts/Two_spheres red & blue/two_spheres_25.png differ diff --git a/scripts/Two_spheres red & blue/two_spheres_26.png b/scripts/Two_spheres red & blue/two_spheres_26.png new file mode 100644 index 0000000000000000000000000000000000000000..aeb7d0068275e65421bf767f394a5413e4a8e6e2 Binary files /dev/null and b/scripts/Two_spheres red & blue/two_spheres_26.png differ diff --git a/scripts/Two_spheres red & blue/two_spheres_27.png b/scripts/Two_spheres red & blue/two_spheres_27.png new file mode 100644 index 0000000000000000000000000000000000000000..3603048a805f32b38af4873f53392b4cb3ad61a1 Binary files /dev/null and b/scripts/Two_spheres red & blue/two_spheres_27.png differ diff --git a/scripts/Two_spheres red & blue/two_spheres_28.png b/scripts/Two_spheres red & blue/two_spheres_28.png new file mode 100644 index 0000000000000000000000000000000000000000..b2603794f8ba959330344effb819f56b65f1187b Binary files /dev/null and b/scripts/Two_spheres red & blue/two_spheres_28.png differ diff --git a/scripts/Two_spheres red & blue/two_spheres_29.png b/scripts/Two_spheres red & blue/two_spheres_29.png new file mode 100644 index 0000000000000000000000000000000000000000..f08262be620cd0ac53f4c6b7ebb881235463cf07 Binary files /dev/null and b/scripts/Two_spheres red & blue/two_spheres_29.png differ diff --git a/scripts/Two_spheres red & blue/two_spheres_3.png b/scripts/Two_spheres red & blue/two_spheres_3.png new file mode 100644 index 0000000000000000000000000000000000000000..75d71c7b825cfacdd1caa44efbbe28adafe27c8b Binary files /dev/null and b/scripts/Two_spheres red & blue/two_spheres_3.png differ diff --git a/scripts/Two_spheres red & blue/two_spheres_30.png b/scripts/Two_spheres red & blue/two_spheres_30.png new file mode 100644 index 0000000000000000000000000000000000000000..48b269e03e10a848ccfb6df12ad4b01d7d4c6284 Binary files /dev/null and b/scripts/Two_spheres red & blue/two_spheres_30.png differ diff --git a/scripts/Two_spheres red & blue/two_spheres_31.png b/scripts/Two_spheres red & blue/two_spheres_31.png new file mode 100644 index 0000000000000000000000000000000000000000..88a3401b0afe88d281b25ee79218f5dfb63c8f86 Binary files /dev/null and b/scripts/Two_spheres red & blue/two_spheres_31.png differ diff --git a/scripts/Two_spheres red & blue/two_spheres_32.png b/scripts/Two_spheres red & blue/two_spheres_32.png new file mode 100644 index 0000000000000000000000000000000000000000..98e114ed3fa40cf4d2677dc448adbed3d145e162 Binary files /dev/null and b/scripts/Two_spheres red & blue/two_spheres_32.png differ diff --git a/scripts/Two_spheres red & blue/two_spheres_33.png b/scripts/Two_spheres red & blue/two_spheres_33.png new file mode 100644 index 0000000000000000000000000000000000000000..7506316d0b3d07649df76265c2669e73fa2125c0 Binary files /dev/null and b/scripts/Two_spheres red & blue/two_spheres_33.png differ diff --git a/scripts/Two_spheres red & blue/two_spheres_34.png b/scripts/Two_spheres red & blue/two_spheres_34.png new file mode 100644 index 0000000000000000000000000000000000000000..313dacca901f16c21681fe4c061f9d51d9aa81d1 Binary files /dev/null and b/scripts/Two_spheres red & blue/two_spheres_34.png differ diff --git a/scripts/Two_spheres red & blue/two_spheres_35.png b/scripts/Two_spheres red & blue/two_spheres_35.png new file mode 100644 index 0000000000000000000000000000000000000000..0cdd9546d005d0451373e55d8b03c59c13d88fce Binary files /dev/null and b/scripts/Two_spheres red & blue/two_spheres_35.png differ diff --git a/scripts/Two_spheres red & blue/two_spheres_4.png b/scripts/Two_spheres red & blue/two_spheres_4.png new file mode 100644 index 0000000000000000000000000000000000000000..c99549338146f24a94e570d2a99952a33e278953 Binary files /dev/null and b/scripts/Two_spheres red & blue/two_spheres_4.png differ diff --git a/scripts/Two_spheres red & blue/two_spheres_5.png b/scripts/Two_spheres red & blue/two_spheres_5.png new file mode 100644 index 0000000000000000000000000000000000000000..eb4b8b220a3c8ce1922791ea731a0b21726eb6ef Binary files /dev/null and b/scripts/Two_spheres red & blue/two_spheres_5.png differ diff --git a/scripts/Two_spheres red & blue/two_spheres_6.png b/scripts/Two_spheres red & blue/two_spheres_6.png new file mode 100644 index 0000000000000000000000000000000000000000..695c1329afeaf141428f6ad0e12ad172e1f613ef Binary files /dev/null and b/scripts/Two_spheres red & blue/two_spheres_6.png differ diff --git a/scripts/Two_spheres red & blue/two_spheres_7.png b/scripts/Two_spheres red & blue/two_spheres_7.png new file mode 100644 index 0000000000000000000000000000000000000000..c0ac80d3b5c17088eda527b398cb8c916cad93a9 Binary files /dev/null and b/scripts/Two_spheres red & blue/two_spheres_7.png differ diff --git a/scripts/Two_spheres red & blue/two_spheres_8.png b/scripts/Two_spheres red & blue/two_spheres_8.png new file mode 100644 index 0000000000000000000000000000000000000000..46cb178a878ddd6800fbfc68be3923cf88f325d6 Binary files /dev/null and b/scripts/Two_spheres red & blue/two_spheres_8.png differ diff --git a/scripts/Two_spheres red & blue/two_spheres_9.png b/scripts/Two_spheres red & blue/two_spheres_9.png new file mode 100644 index 0000000000000000000000000000000000000000..3c61c6fb298f6d908becc61777843e384185a3b1 Binary files /dev/null and b/scripts/Two_spheres red & blue/two_spheres_9.png differ diff --git a/scripts/two_spheres_reflection.png b/scripts/two_spheres_reflection.png new file mode 100644 index 0000000000000000000000000000000000000000..89fa5b3d0f4ce9c9ebddff669a4909cf3cf51d8d Binary files /dev/null and b/scripts/two_spheres_reflection.png differ