def test_finite(self): c = FiniteConjugate(radius=.1, pupil=dict(type="slope", distance=6., slope=2. / 6)) self.assertAlmostEqual(c.pupil.na, sinarctan(c.pupil.radius / c.pupil.distance)) self.some_aims(c)
def test_finite(self): c = FiniteConjugate(entrance_distance=6., entrance_radius=2., pupil_distance=9., radius=.1) self.assertAlmostEqual(c.pupil_radius, c.entrance_radius/c.entrance_distance*c.pupil_distance) self.assertAlmostEqual(c.na, sinarctan(c.entrance_radius/c.entrance_distance)) self.some_aims(c)
def test_real_similar_to_parax(self, n=100, e=1e-3): y0p = np.random.randn(n, 2)*e u0p = np.random.randn(n, 2)*e y0r = np.hstack((y0p, np.ones((n, 1))*-self.s.distance)) u0r = np.hstack((sinarctan(u0p), np.zeros((n, 1)))) u0r[:, 2] = np.sqrt(1 - np.square(u0p).sum(1)) yup, np_ = self.s.propagate_paraxial(np.hstack((y0p, u0p)).T, 1., 1.) yp, up = np.hsplit(yup.T, 2) # y0r, u0r = self.s.to_normal(y0r, u0r) yr, ur, nr, tr = self.s.propagate(y0r, u0r, 1., 1.) # yr, ur = self.s.from_normal(yr, ur) yr, ur = self.sa.to_axis(yr, ur) nptest.assert_allclose(nr, np_, rtol=e**2, atol=3e-8) nptest.assert_allclose(yr[:, :2], yp, rtol=e**2, atol=3e-8) nptest.assert_allclose(tanarcsin(ur), up/np_, rtol=e**2, atol=3e-8)
def test_real_similar_to_parax(self, n=100, e=1e-3): y0p = np.random.randn(n, 2) * e u0p = np.random.randn(n, 2) * e y0r = np.hstack((y0p, np.ones((n, 1)) * -self.s.distance)) u0r = np.hstack((sinarctan(u0p), np.zeros((n, 1)))) u0r[:, 2] = np.sqrt(1 - np.square(u0p).sum(1)) yup, np_ = self.s.propagate_paraxial(np.hstack((y0p, u0p)).T, 1., 1.) yp, up = np.hsplit(yup.T, 2) # y0r, u0r = self.s.to_normal(y0r, u0r) yr, ur, nr, tr = self.s.propagate(y0r, u0r, 1., 1.) # yr, ur = self.s.from_normal(yr, ur) yr, ur = self.sa.to_axis(yr, ur) nptest.assert_allclose(nr, np_, rtol=e**2, atol=3e-8) nptest.assert_allclose(yr[:, :2], yp, rtol=e**2, atol=3e-8) nptest.assert_allclose(tanarcsin(ur), up / np_, rtol=e**2, atol=3e-8)
def test_finite(self): c = FiniteConjugate(radius=.1, pupil=dict(type="slope", distance=6., slope=2./6)) self.assertAlmostEqual(c.pupil.na, sinarctan(c.pupil.radius/c.pupil.distance)) self.some_aims(c)