文章目录光轴对象光轴方法可视化光轴对象【Paraxial】是optiland中的光轴类不能单独存在必须绑定到一个具体的Optic光学系统上。以optiland示例的Petzval镜头为例可直接调取其光轴成员importmatplotlib.pyplotasplt plt.rcParams[font.sans-serif]Times New Romanfromoptiland.samples.objectivesimportPetzvalLens lensPetzvalLens()lens.draw()plt.show()type(lens.paraxial)# class optiland.paraxial.Paraxial光轴方法【Paraxial】类的本质作用就是在代码层面实现高斯光学的数学模型因此其内置了许多方法包括方法计算内容f1()前焦距Front Focal Length即物方主点到物方焦点的距离。f2()后焦距Back Focal Length也叫有效焦距(EFL)即像方主点到像方焦点的距离。F1()/F2()物方/像方焦点在系统中的位置。P1()物方主平面的位置这个位置通常是相对于系统的第一面Surface 1定义的。P2()像方主平面后主面 的位置。注意这个位置通常是相对于像面Image Surface定义的。N1() / N2()物方节点和像方节点的位置。在物像空间折射率相同如都在空气中的情况下节点与主点重合。EPD()入瞳直径Entrance Pupil Diameter。EPL()入瞳位置Entrance Pupil Location。XPL()出瞳位置Exit Pupil Location相对于像面。XPD()出瞳直径Exit Pupil Diameter。FNO()像方 F 数Image-space F-number如果系统定义了直接 F 数则直接返回。magnification()系统的横向放大率Transverse Magnification。invariant()拉格朗日不变量Lagrange Invariant可视化下面将近轴光学中部分重要参数在图像中绘制出来代码如下fig,axlens.draw(num_rays3)# 获取paraxial属性plens.paraxial# 获取表面位置z1lens.surfaces.positions[1,0]# 第一表面位置zImglens.surfaces.positions[-1,0]# 像面位置F1_globalz1p.F1()# 物方焦点F2_globalzImgp.F2()# 像方焦点P1_globalz1p.P1()# 物方主面P2_globalzImgp.P2()# 像方主面EPL_globalz1p.EPL()# 入瞳位置XPL_globalzImgp.XPL()# 出瞳位置ax.axvline(F1_global,colorred,linestyle--,linewidth1.5,labelF1 (Object Focus))ax.axvline(F2_global,colorblue,linestyle--,linewidth1.5,labelF2 (Image Focus))ax.axvline(P1_global,colorred,linestyle:,linewidth2,labelP1 (Object Principal))ax.axvline(P2_global,colorblue,linestyle:,linewidth2,labelP2 (Image Principal))ax.axvline(EPL_global,colorgreen,linestyle-.,linewidth1.5,labelfEP (Entrance Pupil))ax.axvline(XPL_global,colorgreen,linestyle-.,linewidth1.5,labelfXP (Exit Pupil))# 添加图例和标题ax.legend(locupper left)plt.tight_layout()plt.show()