如何计算非序列物件的表面矢高

前言

Zemax OpticStudio中,我们经常需要读取一些表面Sag。在序列模式中,我们可以通过操作数SAGG或者在Analyze > Surface > Surface Sag得到表面Sag。但是在非序列模式中读取表面Sag的过程会稍微复杂一些。主要原因在于序列模式中的表面都是通过单个方程计算的,这种方程主要描述了表面与顶点切平面之间的距离。但是非序列模式中,对象均为三维物体(可以是任意复杂的形状),可通过Object Viewer来查看物体,但物体表面Sag数据又取决于查看物体的角度。

本文我们将介绍如何使用操作数NSRA 得到光源发出的一条光线与物体交点的位置(沿局部Z轴方向)信息。我们需要做的就是调整光源坐标,然后将该光线和物体的交点Z轴坐标读取出来,即可得到完整的Sag信息。


使用Universal Plot 3D计算

举例说明,假设我们需要知道一个CPC物体的表面Sag。非序列元件编辑器中我们一共定义了两个物体。具体数值如下:

注:CPC为Compound Parabolic Concentrator

打开Analyze> Universal Plot >2D>New,具体设定如下:

X轴设置为物体1(Source Ray)的X Position,该值从-1到2步数为50份;Y轴设置为物体1的Y Position,该值从-2到1步数为50份。Z轴则为操作数NSRA的数值。操作数NSRA的参数设置如下:

点击OK可以看到下面的伪彩图,其中CPC的Z坐标是X和Y的函数。

计算该图时,Source Ray的X、Y坐标分别在-1到2以及-2到1之间变化,系统会自动计算该范围内光线与CPC交点Z坐标。点击Text就可以得到完整的数值资料。

如果需要得到物体不同方向上的Sag,则可以直接指定该物体的Tilt About X/Y/Z,再重复上面的操作。


使用ZPL宏计算表面Sag

表面Sag的计算可以使用ZPL宏自动计算,代码如下:

在这个宏中,要求输入光源移动的X、Y轴的范围以及扫描时的步数,这和我们在Universal Plot 2D中输入的参数一样。

然后通过SETPOSITION关键词使光源的位置进行上述范围的变动,再通过NSRA计算光线与物体交点的Z的坐标位置。在宏中读取NSRA时,我们还需要使用OCOD以及OPEV两个关键词。Source Ray的初始位置可以通过NPOS读取,当宏执行完毕之前,会再次把Source Ray移回到初始位置。当然,关于以上说明都可以在Help文档中找到。

本文计算出的X、Y、Z坐标如下:


总结

操作数NSRA可以和Source Ray共用来计算非序列物体的表面矢高(Sag)。有两种方法可以完成此操作:使用Universal Plot 2D、使用ZPL宏

不管使用哪一种方法都可以明确指定步进,进而可以得到任意分辨率的表面sag。