#!/usr/bin/env python # coding: utf-8 # In[1]: get_ipython().run_line_magic('matplotlib', 'inline') isdark = False from rayoptics.environment import * from rayoptics.elem.elements import Element from rayoptics.raytr.trace import apply_paraxial_vignetting opm = OpticalModel() sm = opm.seq_model osp = opm.optical_spec pm = opm.parax_model osp.pupil = PupilSpec(osp, key=['image', 'f/#'], value=1.8) osp.field_of_view = FieldSpec(osp, key=['object', 'angle'], flds=[0., 23]) osp.spectral_region = WvlSpec([(486.1327, 0.5), (587.5618, 1.0), (656.2725, 0.5)], ref_wl=1) opm.system_spec.title = 'AI Nikkor 50mm f/1.8S (US 4' opm.system_spec.dimensions = 'MM' opm.radius_mode = True sm.gaps[0].thi=1e10 sm.add_surface([48.984,3.395,1.76682,46.81]) sm.ifcs[-1].max_aperture = 14.775 sm.add_surface([1676.35,0.095]) sm.ifcs[-1].max_aperture = 14.775 sm.add_surface([19.388,4.025,1.79713,45.62]) sm.ifcs[-1].max_aperture = 13.345 sm.add_surface([33.29,1.26]) sm.ifcs[-1].max_aperture = 12.375 sm.add_surface([67.471,0.97,1.71714,29.49]) sm.ifcs[-1].max_aperture = 13.345 sm.add_surface([15.627,5.79]) sm.ifcs[-1].max_aperture = 10.56 sm.add_surface([0,5.31]) sm.set_stop() sm.ifcs[-1].max_aperture = 10.2405 sm.add_surface([-16.267,0.97,1.64831,33.8]) sm.ifcs[-1].max_aperture = 10.425 sm.add_surface([-211.893,4.8,1.76682,46.81]) sm.ifcs[-1].max_aperture = 12.15 sm.add_surface([-20.232,0.095]) sm.ifcs[-1].max_aperture = 12.15 sm.add_surface([380.201,2.765,1.71313,53.94]) sm.ifcs[-1].max_aperture = 12.275 sm.add_surface([-52.203,37.1]) sm.ifcs[-1].max_aperture = 12.275 sm.list_surfaces() sm.list_gaps() opm.update_model() sm.list_model() pm.first_order_data() apply_paraxial_vignetting(opm) layout_plt = plt.figure(FigureClass=InteractiveLayout, opt_model=opm, do_draw_rays=True, do_paraxial_layout=False, is_dark=isdark).plot() spot_plt = plt.figure(FigureClass=SpotDiagramFigure, opt_model=opm, scale_type=Fit.User_Scale, user_scale_value=0.1, is_dark=isdark).plot() # In[ ]: