Zemax序列模式中如何正确建模椭球反射镜?
几乎每个光学工程师都知道,光学软件里的Standard面型可以用来进行椭球面的建模,比如下面这个,平平无奇:
椭球的几何性质保障了一个焦点发出的光束会完美聚焦到另一个焦点上。然而上图这种光束沿着光轴发射的场景并不是实际的椭球反射镜的最常见使用方式,因为其中有一个焦点和光束有遮挡。所以更多的情况,是希望把光束往光轴外发射,并且在另一个焦点上完成光线中继(relay),就像下面这幅图。
要用Standard面完成上面这样的建模并不算太容易,要搞定一些需要清晰的头脑才能行的坐标旋转。
数据我放着,需要的人可以抄来用,原理我不想解释了。
其实做到这一步,光看个椭球还算好,如果要继续往下建模,那才是噩梦的开始。因为你很快就会发现,坐标系全是乱的。
比如,我想在椭球镜后面再用一个抛物反射镜把光束准直了,在梳理完各种坐标旋转后,建出来的模型会是这样的。注意一下光线的走向:
这个光线的走向明显有错误,而且我保证,后面怎么理都是理不顺的。后续的分析和优化,都会是一笔糊涂账。
我们来解析一下出现这种问题的根因是什么:
首先要注意到,这个椭球面的建模原点是标了红点的地方,那么可以看到这个这片用来反射的椭球镜区域,对于这个面而言,是超半球的!超半球时经典的矢高表达式z = f(x,y)就会因为多解而出问题,同时做线面求交的时候同样存在多解问题。
另外,注意一下橙色圈和绿色圈选中的光线,它们和Z轴的夹角 direction cosine的符号也是相反的,对于软件而言,就感觉一半光线在往“正向”走,另一半光线在往“负向”走,这就导致了光线传递到后面的表面之后,出现了混乱。(其实写一些“聪明”的算法是能搞定的,但可惜商用序列模式光学软件还不够聪明)
那正确的做法应该是什么呢?很明显,对于这个模型应该想办法把椭球面的建模原点从红点转移到紫色点的位置,这样的话可以顺利规避掉上述的问题。
然而,新的问题是:以紫色点为顶点的曲面sag,要用什么数学表达式来描述?你可以试试,但它不是初等函数。那怎么办?Zemax提供了一种很少有人知道的面型,其实正好是用来干这个事情的,那就是Conjugate面型。
先来看手册:
所以这个面的定义方式就是用圆锥曲面的2个焦点来定义曲面,而面的顶点可以设置在上述紫色点处。
经过一些简单的数学计算和坐标变换,我们可以得到以下模型,很明显,这次光线都是顺的,后续如果还有进一步的建模,都会是对的。
建模数据我也贴上来了,需要的话直接拿去用,就不解释了。
总结一下:椭球镜离轴使用时,为了避免序列模式光线追迹的坐标错乱,我们应该使用紫色点作为椭球面的建模原点。而这个时候无法使用Standard面来建模,应当使用Zemax里的Conjugate面型来完成建模工作。
(有的时候,我也见过有人以紫色点为面顶点,使用轮胎面(Toroidal)来建立这个模型,并且优化Toroidal的参数,获取尽可能好的一个汇聚点。这个方法在工程上凑活,但是并不严格正确。因为Toroidal的面定义方式决定它就不是椭圆,没有理想的光学性质。)
参考资料与推荐阅读:
https://support.zemax.com/hc/en-us/articles/1500005487261-How-to-model-an-ellipse-using-the-Conjugate-Surface
(阅读原文)