#!/usr/bin/env python # coding: utf-8 # In[83]: import numpy as np import matplotlib.pyplot as plt import requests import copy as cp from rayopt import * from rayopt import zemax np.set_printoptions(precision=3) get_ipython().run_line_magic('pylab', 'inline') # In[84]: d = requests.get("http://www.lens-designs.com/MicroscopeObjectives/US06507442-1.zmx") d.encoding = "utf-16" # In[3]: s = zemax.zmx_to_system(d.text) s.object = InfiniteConjugate(angle_deg=1.7, pupil=dict(radius=1.5)) s.wavelengths = 248e-9, 249e-9, 247e-9, s.fields = 0, .7, 1. s.stop = 8 del s[0] s[0].radius = 2. s[1].radius = 1.7 s[1].distance = 5. s[2].radius = 1.2 s[3].radius = 1.2 s[-1].distance += 3.7e-3 s.update() s.resize_convex() a = Analysis(s, refocus_full=False) # In[4]: from rayopt.utils import sinarctan, tanarcsin g = GeometricTrace(s) z, m = s.pupil((0, 1)) ss = np.linspace(-1, 1, 101) # aperture tt = 0.*np.ones_like(ss) # field fig, ax = plt.subplots(figsize=(15, 10)) g.rays((0, tt[0]), np.c_[np.zeros_like(ss), ss], s.wavelengths[0], filter=False) for i in range(4, 14): o = PolyTrace(s, i) #ax.plot(-ss, g.y[-1, :, 1], "k") ax.plot(-ss, o.evaluate(ss[:, None], tt[:, None])[:, 0] - g.y[-1, :, 1], label=str(i)) ax.set_xlim(-1, 1) ax.set_ylim(-1e-5, 1e-5) ax.legend() # In[29]: print(o) # In[ ]: