diff options
Diffstat (limited to 'scenes/checkerboard.py')
-rw-r--r-- | scenes/checkerboard.py | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/scenes/checkerboard.py b/scenes/checkerboard.py new file mode 100644 index 0000000..2852348 --- /dev/null +++ b/scenes/checkerboard.py @@ -0,0 +1,58 @@ +import os +import sys + +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 optics import * +from make import * + +checkers_per_side = 10 +squares_per_checker = 10 + + +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]))) + +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 = 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)) + +print len(checkerboard.triangles) +print len(checker_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)) + +checkerboard_solid = Solid(checkerboard, vacuum, vacuum, surface=checker_surface, color=checker_color) + +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) |