在计算机发明之前,我们想要设计一个镜头,也需要通过光线追迹去计算各种像差参数。我们现在谈到几何光学,很多重要的概念都是在这个过程中提出并发展应用的。现在我们市面上能见到的几乎所有光学设计软件,最基础的功能都是用几何的方法追迹光线。所有的优化功能和评价都是基于光线追迹得到的。但是大家真的明白如何在一个透镜组中去追迹一条光线吗,可以自己编程去计算出来吗?

今天我先向大家演示在近轴光学下的光线追迹方法,并给出一个Excel表格可供大家使用。后续我们希望把这个做成一个系列,通过自己编程计算,相信能帮助很多初学者真正理解光学设计中的各种基本知识~

一.近轴光学的理论基础

近轴光学 (Paraxial Optics)又被称为高斯光学(Gaussian Optics),该理论主要应用了近轴近似,即假设光线与光轴的夹角非常小,因此满足小角度近似条件:

在这个基础上,简化斯涅尔定律,即折射定律,可以得到一个线性方程组:

其中i表示第i个表面处,y为光线高度,u为光线与光轴的夹角,t为表面厚度,n为折射率,R为曲率半径。利用上面的式子,即可近似的描述光线在一个界面前后的行为,从前到后传递。

因此,上式及其各种变形也被称为转面公式或者传递公式,通过对上式的迭代计算,我们即可实现光线从前一个面到后一个面的追迹,这种一个一个表面依次计算的方法也就是所谓的序列模式计算方法。

二.用Excel实现

首先定义输入光线参数,主要包括输入光线的高度(其实也就是入瞳的直径),以及输入光线与光轴的夹角(视场角,对应各个表面的光线高度以及像高)。

完成初始定义后,我们可以在表格另外的位置输入表面的参数,这里我使用与常见光学设计软件一致的输入方式,可以定义表面的半径,厚度,以及折射率。这里我简单的给定一个两片透镜组成的模型,因为我们现在不知道组合后的焦距,也不知道后截距,最后一个表面到像面的间隔可以随便给一个:

近轴理论下传递公示的核心就是在一个表面折射后,对应的表面位置高度,以及出射光线和光轴的夹角,这里我们可以很容易的用Excel实现迭代计算:

编辑好公式后直接在对应的单元格下来即可,这里我们可以看到,虽然追迹了一条平行光线,最终像面上的高度却不是0,说明现在像面位置不是焦面位置。

这里我们可以像商用软件那样求解,应用Excel表中自带的数据 -模拟分析-单变量求解即可找到对应的后焦位置,目标值设为0,将后焦对应的D12单元格设为变量,点击确定。

此时即可得到近轴焦面位置:

三.验证与问题

此时我们把表格中的数据输入到Zemax中,可以看到现在这两片透镜正确聚焦了,这说明我们的计算没有问题:

但是,当我们增大表格中输入的孔径和视场时,我们会发现,孔径越大,视场越大,Excel表格中的计算结果和Zemax的偏差越大:

(入瞳直径为30mm)

(视场角为10°,注意像面大小和光线形态)

(视场角为30°,注意像面大小和光线形态)

了解过镜头设计的读者肯定就知道了,这个误差正是我们说的像差。近轴理论本质上是一种线性近似,只在光线和光轴的夹角u较小时满足。上面我举的几个例子对应了新的情况,具有两条新的特点:

(1)近似失效:无法认为sinU=U,小角近似失效;

(2)薄透镜失效:在近轴理论中,我们认为透镜没有厚度,但实际的透镜是一个球面,当口径和视场角增大时,我们不能忽略表面矢高的影响。

如果让光线传递严格遵循斯涅尔定律,我们就可以得到各个表面光线位置的精确解,但是在没有计算机的时代,这样的计算过于复杂,因此利用泰勒展开,将三角函数分解,并忽略高阶项,我们就可以得到初级像差。如果大家感兴趣,可以自行研究一下,我们在后面也会给大家介绍。

四.总结

本文利用Excel简单的构建了一个一阶光线追迹工具,当前的计算模型已成功复现了近轴光学的理论计算。建议大家尝试自行设计,这个和我们之前演示的一些程序相比非常简单,相信大家完全可以自行完成。