summaryrefslogtreecommitdiff
path: root/scenes
diff options
context:
space:
mode:
Diffstat (limited to 'scenes')
-rw-r--r--scenes/__init__.py1
-rw-r--r--scenes/checkerboard.py71
2 files changed, 32 insertions, 40 deletions
diff --git a/scenes/__init__.py b/scenes/__init__.py
new file mode 100644
index 0000000..1d57220
--- /dev/null
+++ b/scenes/__init__.py
@@ -0,0 +1 @@
+from checkerboard import build_checkerboard_scene
diff --git a/scenes/checkerboard.py b/scenes/checkerboard.py
index 2852348..1475a30 100644
--- a/scenes/checkerboard.py
+++ b/scenes/checkerboard.py
@@ -5,54 +5,45 @@ dir = os.path.split(os.path.realpath(__file__))[0]
sys.path.append(dir + '/..')
import numpy as np
-from itertools import product
-from itertoolset import ncycles
-from geometry import *
+from itertoolset import *
+from geometry import Mesh, Solid, Geometry
from optics import *
-from make import *
+from make import sphere
+from view import buildable
-checkers_per_side = 10
-squares_per_checker = 10
+@buildable('checkerboard_scene')
+def build_checkerboard_scene(checkers_per_side=10, squares_per_checker=50):
+ x = np.linspace(-5.0, 5.0, checkers_per_side*squares_per_checker+1)
+ y = np.linspace(-5.0, 5.0, checkers_per_side*squares_per_checker+1)
+ vertices = np.array(tuple(product(x,y,[0])))
-x = np.linspace(-5.0, 5.0, checkers_per_side*squares_per_checker+1)
-y = np.linspace(-5.0, 5.0, checkers_per_side*squares_per_checker+1)
+ triangles = []
+ for j in range(y.size-1):
+ for i in range(x.size-1):
+ triangles.append([j*len(x)+i, (j+1)*len(x)+i,(j+1)*len(x)+i+1])
+ triangles.append([j*len(x)+i, j*len(x)+i+1,(j+1)*len(x)+i+1])
-vertices = np.array(tuple(product(x,y,[0])))
+ checkerboard_mesh = Mesh(vertices, triangles, remove_duplicate_vertices=True)
-triangles = []
-for j in range(y.size-1):
- for i in range(x.size-1):
- triangles.append([j*len(x)+i, (j+1)*len(x)+i,(j+1)*len(x)+i+1])
- triangles.append([j*len(x)+i, j*len(x)+i+1,(j+1)*len(x)+i+1])
+ checkerboard_color_line1 = take(checkers_per_side*squares_per_checker*2, cycle([0]*2*squares_per_checker + [0xffffff]*2*squares_per_checker))*squares_per_checker
+ checkerboard_color_line2 = take(checkers_per_side*squares_per_checker*2, cycle([0xffffff]*2*squares_per_checker + [0]*2*squares_per_checker))*squares_per_checker
+ checkerboard_color = take(len(checkerboard_mesh.triangles), cycle(checkerboard_color_line1 + checkerboard_color_line2))
-checkerboard = Mesh(vertices, triangles, remove_duplicate_vertices=True)
-checker_color_line1 = take(checkers_per_side*squares_per_checker*2, cycle([0]*2*squares_per_checker + [0xffffff]*2*squares_per_checker))*squares_per_checker
-checker_color_line2 = take(checkers_per_side*squares_per_checker*2, cycle([0xffffff]*2*squares_per_checker + [0]*2*squares_per_checker))*squares_per_checker
-checker_color = take(len(checkerboard.triangles), cycle(checker_color_line1 + checker_color_line2))
+ checkerboard_surface_line1 = take(checkers_per_side*squares_per_checker*2, cycle([black_surface]*2*squares_per_checker + [lambertian_surface]*2*squares_per_checker))*squares_per_checker
+ checkerboard_surface_line2 = take(checkers_per_side*squares_per_checker*2, cycle([lambertian_surface]*2*squares_per_checker + [black_surface]*2*squares_per_checker))*squares_per_checker
+ checkerboard_surface = take(len(checkerboard_mesh.triangles), cycle(checkerboard_surface_line1 + checkerboard_surface_line2))
-print len(checkerboard.triangles)
-print len(checker_color)
+ checkerboard = Solid(checkerboard_mesh, vacuum, vacuum, surface=checkerboard_surface, color=checkerboard_color)
-checker_surface_line1 = take(checkers_per_side*squares_per_checker*2, cycle([black_surface]*2*squares_per_checker + [lambertian_surface]*2*squares_per_checker))*squares_per_checker
-checker_surface_line2 = take(checkers_per_side*squares_per_checker*2, cycle([lambertian_surface]*2*squares_per_checker + [black_surface]*2*squares_per_checker))*squares_per_checker
-checker_surface = take(len(checkerboard.triangles), cycle(checker_surface_line1 + checker_surface_line2))
+ sphere1 = Solid(sphere(theta=np.pi/128), water, vacuum)
+ sphere2 = Solid(sphere(theta=np.pi/128), vacuum, vacuum, surface=shiny_surface)
+ sphere3 = Solid(sphere(theta=np.pi/128), vacuum, vacuum, surface=lambertian_surface)
-checkerboard_solid = Solid(checkerboard, vacuum, vacuum, surface=checker_surface, color=checker_color)
+ checkerboard_scene = Geometry()
+ checkerboard_scene.add_solid(checkerboard, displacement=(0,0,-1.5))
+ checkerboard_scene.add_solid(sphere1, displacement=(2.0,-2.0,0))
+ checkerboard_scene.add_solid(sphere2, displacement=(-2.0,-2.0,0))
+ checkerboard_scene.add_solid(sphere3, displacement=(0.0,2.0,0))
-print len(checker_surface)
-
-water_sphere_solid = Solid(sphere(theta=np.pi/64), water, vacuum)
-mirror_sphere_solid = Solid(sphere(theta=np.pi/64), vacuum, vacuum, surface=shiny_surface)
-diffuse_sphere_solid = Solid(sphere(theta=np.pi/64), vacuum, vacuum, surface=lambertian_surface)
-
-checkerboard_scene = Geometry()
-checkerboard_scene.add_solid(checkerboard_solid, displacement=(0,0,-1.5))
-checkerboard_scene.add_solid(water_sphere_solid, displacement=(2.0,-2.0,0))
-checkerboard_scene.add_solid(mirror_sphere_solid, displacement=(-2.0,-2.0,0))
-checkerboard_scene.add_solid(diffuse_sphere_solid, displacement=(0.0,2.0,0))
-
-#from view import *
-from render import *
-
-view(checkerboard_scene)
+ return checkerboard_scene