diff options
author | Anthony LaTorre <tlatorre9@gmail.com> | 2011-06-18 00:12:09 -0400 |
---|---|---|
committer | Anthony LaTorre <tlatorre9@gmail.com> | 2011-06-18 00:12:09 -0400 |
commit | ab54917bceb4943f6750f589ffe6a032b2770fb1 (patch) | |
tree | e76ede76a1344820c424f2c07bc44ef22201864c /materials/__init__.py | |
parent | 34ff4d6c734e5adf3aa8a0e7ca89031effdb1489 (diff) | |
download | chroma-ab54917bceb4943f6750f589ffe6a032b2770fb1.tar.gz chroma-ab54917bceb4943f6750f589ffe6a032b2770fb1.tar.bz2 chroma-ab54917bceb4943f6750f589ffe6a032b2770fb1.zip |
moved class definitions for Solid, Mesh, Material, and Surface into geometry.py and moved instances of these classes into separate folders. the Solid object no longer contains a rotation, displacement, or id variable; instead, they are passed to a geometry object when calling add_solid().
Diffstat (limited to 'materials/__init__.py')
-rw-r--r-- | materials/__init__.py | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/materials/__init__.py b/materials/__init__.py new file mode 100644 index 0000000..d2644ad --- /dev/null +++ b/materials/__init__.py @@ -0,0 +1,57 @@ +import os +import sys +import numpy as np +from ratdb import load + +dir = os.path.split(os.path.realpath(__file__))[0] +sys.path.append(dir + '/..') + +from geometry import Material, Surface + +vacuum = Material('vacuum') +vacuum.set('refractive_index', 1) +vacuum.set('absorption_length', np.finfo(np.float32).max) +vacuum.set('scattering_length', np.finfo(np.float32).max) + +lambertian_surface = Surface('lambertian_surface') +lambertian_surface.set('absorption', 0) +lambertian_surface.set('reflection_specular', 0) +lambertian_surface.set('reflection_diffuse', 1) + +black_surface = Surface('black_surface') +black_surface.set('absorption', 1) +black_surface.set('reflection_specular', 0) +black_surface.set('reflection_diffuse', 0) + +shiny_surface = Surface('shiny_surface') +shiny_surface.set('absorption', 0) +shiny_surface.set('reflection_specular', 1) +shiny_surface.set('reflection_diffuse', 0) + +db = load(open(dir + '/OPTICS.ratdb'))['OPTICS'] + +glass = Material('pmt_glass') +glass.set('refractive_index', db['glass']['RINDEX_value2'], db['glass']['RINDEX_value1']) +glass.set('absorption_length', db['glass']['ABSLENGTH_value2'], db['glass']['ABSLENGTH_value1']) +# convert mm -> m +glass.absorption_length[:,1] /= 1000.0 +# scattering length for glass? +glass.set('scattering_length', np.finfo(np.float32).max) + +lightwater_sno = Material('lightwater_sno') +lightwater_sno.set('refractive_index', db['lightwater_sno']['RINDEX_value2'], db['lightwater_sno']['RINDEX_value1']) +lightwater_sno.set('absorption_length', db['lightwater_sno']['ABSLENGTH_value2'], db['lightwater_sno']['ABSLENGTH_value1']) +# convert mm -> m +lightwater_sno.absorption_length[:,1] /= 1000.0 +lightwater_sno.set('scattering_length', db['lightwater_sno']['RSLENGTH_value2'], db['lightwater_sno']['RSLENGTH_value1']) +# convert mm -> m +lightwater_sno.scattering_length[:,1] /= 1000.0 + +acrylic_sno = Material('acrylic_sno') +acrylic_sno.set('refractive_index', db['acrylic_sno']['RINDEX_value2'], db['lightwater_sno']['RINDEX_value1']) +acrylic_sno.set('absorption_length', db['acrylic_sno']['ABSLENGTH_value2'], db['acrylic_sno']['ABSLENGTH_value1']) +# convert mm -> m +acrylic_sno.absorption_length[:,1] /= 1000.0 +acrylic_sno.set('scattering_length', db['acrylic_sno']['RSLENGTH_value2'], db['acrylic_sno']['RSLENGTH_value1']) +# convert mm -> m +acrylic_sno.scattering_length[:,1] /= 1000.0 |