From 1292c8822b2e8d180ae1721cfa4def21b05905d6 Mon Sep 17 00:00:00 2001 From: Stan Seibert Date: Thu, 29 Sep 2011 19:41:53 -0400 Subject: Move checkerboard into demo package --- chroma/demo/__init__.py | 3 +++ chroma/demo/checkerboard.py | 42 ++++++++++++++++++++++++++++++++++++++++++ chroma/scenes/__init__.py | 1 - chroma/scenes/checkerboard.py | 43 ------------------------------------------- 4 files changed, 45 insertions(+), 44 deletions(-) create mode 100644 chroma/demo/checkerboard.py delete mode 100644 chroma/scenes/__init__.py delete mode 100644 chroma/scenes/checkerboard.py diff --git a/chroma/demo/__init__.py b/chroma/demo/__init__.py index b103626..edd344a 100644 --- a/chroma/demo/__init__.py +++ b/chroma/demo/__init__.py @@ -12,6 +12,8 @@ from chroma.transform import rotate, make_rotation_matrix from chroma.demo.pmt import build_8inch_pmt_with_lc from chroma.demo.optics import water +from chroma.demo.checkerboard import build_checkerboard_scene as checkerboard_scene + def spherical_spiral(radius, spacing): '''Returns iterator generating points on a spiral wrapping the surface of a sphere. Points should be approximately equidistiant @@ -54,3 +56,4 @@ def detector(pmt_radius=30.0, sphere_radius=30.5, spiral_step=0.14): def tiny(): return detector(1.0, 1.5, 0.4) + diff --git a/chroma/demo/checkerboard.py b/chroma/demo/checkerboard.py new file mode 100644 index 0000000..dd2e3e1 --- /dev/null +++ b/chroma/demo/checkerboard.py @@ -0,0 +1,42 @@ +import numpy as np +from chroma.itertoolset import * +from chroma.geometry import Mesh, Solid, Geometry +from chroma.make import sphere + +from chroma.demo.optics import * + +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]))) + + 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 = Mesh(vertices, triangles, remove_duplicate_vertices=True) + + 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_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)) + + checkerboard = Solid(checkerboard_mesh, vacuum, vacuum, surface=checkerboard_surface, color=checkerboard_color) + + sphere1 = Solid(sphere(nsteps=512), water, vacuum) + sphere2 = Solid(sphere(nsteps=512), vacuum, vacuum, surface=shiny_surface) + sphere3 = Solid(sphere(nsteps=512), vacuum, vacuum, surface=lambertian_surface) + + 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)) + + return checkerboard_scene diff --git a/chroma/scenes/__init__.py b/chroma/scenes/__init__.py deleted file mode 100644 index 1d57220..0000000 --- a/chroma/scenes/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from checkerboard import build_checkerboard_scene diff --git a/chroma/scenes/checkerboard.py b/chroma/scenes/checkerboard.py deleted file mode 100644 index c176b32..0000000 --- a/chroma/scenes/checkerboard.py +++ /dev/null @@ -1,43 +0,0 @@ -import numpy as np -from chroma.itertoolset import * -from chroma.geometry import Mesh, Solid, Geometry -from chroma.optics import * -from chroma.make import sphere -#from chroma.camera import buildable - -#@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]))) - - 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 = Mesh(vertices, triangles, remove_duplicate_vertices=True) - - 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_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)) - - checkerboard = Solid(checkerboard_mesh, vacuum, vacuum, surface=checkerboard_surface, color=checkerboard_color) - - sphere1 = Solid(sphere(nsteps=512), water, vacuum) - sphere2 = Solid(sphere(nsteps=512), vacuum, vacuum, surface=shiny_surface) - sphere3 = Solid(sphere(nsteps=512), vacuum, vacuum, surface=lambertian_surface) - - 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)) - - return checkerboard_scene -- cgit