def setUp(self): # Create some surfaces to intersect with spheres. self.at_origin_xy = N.eye(4) self.at_origin_yz = generate_transform(N.r_[0, 1, 0], N.pi/2, \ N.c_[[0,0,0]]) self.at_origin_slant = generate_transform(N.r_[0, 1, 0], N.pi/4, \ N.c_[[0,0,0]]) self.parallel_xy = generate_transform(N.r_[1, 0, 0], 0, N.c_[[0, 0, 1]]) self.parallel_yz = self.at_origin_yz.copy() self.parallel_yz[0,3] += 1 self.parallel_slanted = self.at_origin_slant.copy() self.parallel_slanted[[0,2],3] += N.sqrt(0.5)
def setUp(self): # Create some surfaces to intersect with spheres. self.at_origin_xy = N.eye(4) self.at_origin_yz = generate_transform(N.r_[0, 1, 0], N.pi/2, \ N.c_[[0,0,0]]) self.at_origin_slant = generate_transform(N.r_[0, 1, 0], N.pi/4, \ N.c_[[0,0,0]]) self.parallel_xy = generate_transform(N.r_[1, 0, 0], 0, N.c_[[0, 0, 1]]) self.parallel_yz = self.at_origin_yz.copy() self.parallel_yz[0, 3] += 1 self.parallel_slanted = self.at_origin_slant.copy() self.parallel_slanted[[0, 2], 3] += N.sqrt(0.5)
def setUp(self): self.assembly = Assembly() surface1 = Surface(flat_surface.FlatGeometryManager(), optics_callables.RefractiveHomogenous(1., 1.5), location=N.array([0,0,-1.])) surface2 = Surface(flat_surface.FlatGeometryManager(), optics_callables.RefractiveHomogenous(1., 1.5), location=N.array([0,0,1.])) self.object1 = AssembledObject() self.object1.add_surface(surface1) self.object1.add_surface(surface2) boundary = BoundarySphere(location=N.r_[0,0.,3], radius=3.) surface3 = Surface(CutSphereGM(2., boundary), optics_callables.perfect_mirror) self.object2 = AssembledObject() self.object2.add_surface(surface3) self.transform = generate_transform(N.r_[1,0.,0],0.,N.c_[[0.,0,2]]) self.assembly.add_object(self.object1) self.assembly.add_object(self.object2, self.transform) x = 1./(math.sqrt(2)) dir = N.c_[[0,1.,0.],[0,x,x],[0,0,1.]] position = N.c_[[0,0,2.],[0,0,2.],[0,0.,2.]] self._bund = RayBundle(position, dir, energy=N.ones(3), ref_index=N.ones(3))
def test_transformed(self): """Translated and rotated dish rejects missing rays""" trans = generate_transform(N.r_[1., 0., 0.], N.pi/4., N.c_[[0., 0., 1.]]) self.surf.transform_frame(trans) misses = N.isinf(self.surf.register_incoming(self.bund)) N.testing.assert_array_equal(misses, N.r_[False, False, True, True])
def setUp(self): self.assembly = Assembly() surface1 = Surface(flat_surface.FlatGeometryManager(), optics_callables.RefractiveHomogenous(1., 1.5), location=N.array([0, 0, -1.])) surface2 = Surface(flat_surface.FlatGeometryManager(), optics_callables.RefractiveHomogenous(1., 1.5), location=N.array([0, 0, 1.])) self.object1 = AssembledObject() self.object1.add_surface(surface1) self.object1.add_surface(surface2) boundary = BoundarySphere(location=N.r_[0, 0., 3], radius=3.) surface3 = Surface(CutSphereGM(2., boundary), optics_callables.perfect_mirror) self.object2 = AssembledObject() self.object2.add_surface(surface3) self.transform = generate_transform(N.r_[1, 0., 0], 0., N.c_[[0., 0, 2]]) self.assembly.add_object(self.object1) self.assembly.add_object(self.object2, self.transform) x = 1. / (math.sqrt(2)) dir = N.c_[[0, 1., 0.], [0, x, x], [0, 0, 1.]] position = N.c_[[0, 0, 2.], [0, 0, 2.], [0, 0., 2.]] self._bund = RayBundle(position, dir, energy=N.ones(3), ref_index=N.ones(3))
def test_transformed(self): """Translated and rotated dish rejects missing rays""" trans = generate_transform(N.r_[1., 0., 0.], N.pi / 4., N.c_[[0., 0., 1.]]) self.surf.transform_frame(trans) misses = N.isinf(self.surf.register_incoming(self.bund)) N.testing.assert_array_equal(misses, N.r_[False, False, True, True])
def setUp(self): s2 = math.sqrt(2) dir = N.c_[[1, 0, -s2], [-1, 0, -s2], [-1, -s2, 0], [1, -s2, 0]] / math.sqrt(3) position = N.c_[[0,1/s2,1/s2], [1,0,s2], [1,s2,0], [-1,s2,0]] self._bund = RayBundle(position, dir) self.gm = FlatGeometryManager() frame = SP.generate_transform(N.r_[1., 0, 0], -N.pi/4., N.zeros((3,1))) self.prm = self.gm.find_intersections(frame, self._bund)
def setUp(self): self.eighth_circle_trans = generate_transform(N.r_[1., 0, 0], N.pi/4, N.c_[[0., 1, 0]]) self.surf = Surface(flat_surface.FlatGeometryManager(), \ optics_callables.perfect_mirror) self.obj = AssembledObject(surfs=[self.surf]) self.sub_assembly = Assembly() self.sub_assembly.add_object(self.obj, self.eighth_circle_trans) self.assembly = Assembly() self.assembly.add_assembly(self.sub_assembly, self.eighth_circle_trans)
def setUp(self): self.eighth_circle_trans = generate_transform(N.r_[1., 0, 0], N.pi / 4, N.c_[[0., 1, 0]]) self.surf = Surface(flat_surface.FlatGeometryManager(), \ optics_callables.perfect_mirror) self.obj = AssembledObject(surfs=[self.surf]) self.sub_assembly = Assembly() self.sub_assembly.add_object(self.obj, self.eighth_circle_trans) self.assembly = Assembly() self.assembly.add_assembly(self.sub_assembly, self.eighth_circle_trans)
def setUp(self): s2 = math.sqrt(2) dir = N.c_[[1, 0, -s2], [-1, 0, -s2], [-1, -s2, 0], [1, -s2, 0]] / math.sqrt(3) position = N.c_[[0, 1 / s2, 1 / s2], [1, 0, s2], [1, s2, 0], [-1, s2, 0]] self._bund = RayBundle(position, dir) self.gm = FlatGeometryManager() frame = SP.generate_transform(N.r_[1., 0, 0], -N.pi / 4., N.zeros((3, 1))) self.prm = self.gm.find_intersections(frame, self._bund)
def setUp(self): self.assembly = Assembly() surface1 = Surface(FlatGeometryManager(), opt.perfect_mirror) self.object1 = AssembledObject() self.object1.add_surface(surface1) boundary = BoundarySphere(location=N.r_[0,0.,3], radius=3.) surface3 = Surface(CutSphereGM(2., boundary), opt.perfect_mirror) self.object2 = AssembledObject() self.object2.add_surface(surface3) self.transform1 = generate_transform(N.r_[1.,0,0], N.pi/4, N.c_[[0,0,-1.]]) self.transform2 = translate(0., 0., 2.) self.assembly.add_object(self.object1, self.transform1) self.assembly.add_object(self.object2, self.transform2)
def setUp(self): self.assembly = Assembly() surface1 = Surface(FlatGeometryManager(), opt.perfect_mirror) self.object1 = AssembledObject() self.object1.add_surface(surface1) boundary = BoundarySphere(location=N.r_[0, 0., 3], radius=3.) surface3 = Surface(CutSphereGM(2., boundary), opt.perfect_mirror) self.object2 = AssembledObject() self.object2.add_surface(surface3) self.transform1 = generate_transform(N.r_[1., 0, 0], N.pi / 4, N.c_[[0, 0, -1.]]) self.transform2 = translate(0., 0., 2.) self.assembly.add_object(self.object1, self.transform1) self.assembly.add_object(self.object2, self.transform2)
def test_rotation_and_translation(self): """Tests an assembly that has been translated and rotated""" self._bund = RayBundle() self._bund.set_vertices(N.c_[[0,-5,1],[0,5,1]]) self._bund.set_directions(N.c_[[0,1,0],[0,1,0]]) self._bund.set_energy(N.r_[[1,1]]) self._bund.set_ref_index(N.r_[[1,1]]) trans = generate_transform(N.r_[[1,0,0]], N.pi/2, N.c_[[0,0,1]]) self.assembly.transform_children(trans) self.engine = TracerEngine(self.assembly) params = self.engine.ray_tracer(self._bund,1,.05)[0] correct_params = N.c_[[0,-2,1]] N.testing.assert_array_almost_equal(params, correct_params)
def test_rotation_and_translation(self): """Tests an assembly that has been translated and rotated""" self._bund = RayBundle() self._bund.set_vertices(N.c_[[0, -5, 1], [0, 5, 1]]) self._bund.set_directions(N.c_[[0, 1, 0], [0, 1, 0]]) self._bund.set_energy(N.r_[[1, 1]]) self._bund.set_ref_index(N.r_[[1, 1]]) trans = generate_transform(N.r_[[1, 0, 0]], N.pi / 2, N.c_[[0, 0, 1]]) self.assembly.transform_children(trans) self.engine = TracerEngine(self.assembly) params = self.engine.ray_tracer(self._bund, 1, .05)[0] correct_params = N.c_[[0, -2, 1]] N.testing.assert_array_almost_equal(params, correct_params)