Ejemplo n.º 1
0
 def test_zeroth_order_diffraction_equals_reflection(self):
     plane = Plane()
     ray = Rays([(A, B, -1)], [(0, 0, 1)], uniform(100, 1000))
     reflection = plane.reflect(ray)
     diffraction = plane.diffract(ray, uniform(0.001, 0.002), 0)
     self.assertTrue(allclose(reflection.endpoints, diffraction.endpoints))
     self.assertTrue(allclose(reflection.directions,
                              diffraction.directions))
Ejemplo n.º 2
0
 def test_diffract(self):
     """Test that diffraction works for a simple case."""
     plane = Plane()
     d = 1 / uniform(9e4, 1e5)
     order = -1
     wavelength = uniform(500e-9, 700e-9)
     ray = Rays([(0, -abs(B), 1)],
                array([(0, abs(B), -1)]) / sqrt(B ** 2 + 1),
                wavelength)
     diffraction = plane.diffract(ray, d, order)
     inc_angle = atan(abs(B))
     exit_angle = asin(sin(inc_angle) + order * wavelength / d)
     self.assertTrue(allclose(diffraction.directions[0],
                              (0, -sin(exit_angle), cos(exit_angle))))
Ejemplo n.º 3
0
 def test_reflect_miss(self):
     """Test that rays missing an element have NaN endpoints."""
     plane = Plane()
     ray = Rays([(A+1, B, -1)], [(0, 0, 1)], None)
     reflection = plane.reflect(ray)
     self.assertTrue(all(isnan(reflection.endpoints[0])))
Ejemplo n.º 4
0
 def test_reflect(self):
     plane = Plane()
     ray = Rays([(A, B, -1)], [(0, 0, 1)], None)
     reflection = plane.reflect(ray)
     self.assertTrue(allclose(reflection.endpoints, (A, B, 0)))
     self.assertTrue(allclose(reflection.directions, (0, 0, -1)))
Ejemplo n.º 5
0
 def test_intersect_miss(self):
     "Check that intersecting outside the edges returns NaNs"
     plane = Plane(xsize=0.1)
     rays = Rays([(A + 1, B, -1)], [(0, 0, 1)], None)
     intersection = plane.intersect(rays)
     self.assertTrue(all(isnan(intersection[0])))
Ejemplo n.º 6
0
 def test_intersect(self):
     plane = Plane()
     rays = Rays([(A, B, -1)], [(0, 0, 1)], None)
     intersection = plane.intersect(rays)
     self.assertTrue(allclose(intersection, [(A, B, 0)]))