Also available in English
本文介绍了如何使用NSRA操作数测量非序列对象的表面矢高。
作者:Sanjay Gangadhara
简介
在Zemax中,有许多场景需要了解物体的表面矢高。在序列模式下,可以通过使用SAGG操作数轻松获取表面矢高,或可点击“分析选项卡…表面..矢高”来查看。但在非序列模式下,情况会变得更加复杂。序列表面由参考表面顶点的单一方程定义,而非序列对象是任意复杂的三维物体。虽然可以通过物体观察器查看物体,但矢高数据取决于观察点。
使用二维通用绘图测量表面矢高
通过使用NSRA操作数可轻松确定物体的表面矢高。该操作数可用于求解单光线光源与物体表面的交点(沿局部Z轴方向)。通过改变单光线光源的坐标,即可绘制出物体的完整表面。以复合抛物面聚光器(CPC)为例,我们来测量其表面矢高。打开文章附件链接中提供的文件“NSC_Sag_CPC.zmx”。你会发现非序列组件编辑器中包含两个对象,其参数如下:
物体 1–单光线光源
- (x,y,z) 位置: (0,0,0)
- 陈列光线条数: 1
- 分析光线条数: 1
- 使用NSRA操作数时,务必确保分析光线数设置为1
- 其他所有参数均使用默认值
物体 2 – CPC
- (x,y,z) 位置: (0,0,0.5)
- 倾斜X = 15.0
- 倾斜Y = 15.0
- 径向孔径 = 0.10
- 角 (度) = 10.0
- 长度 = 5.0
- 其他所有参数均使用默认值
点击分析选项卡…通用绘图工具…2-维…新建。可以访问如下所示的设置界面:
自变量X设置为NSC编辑器中单光线光源物体1的x位置,范围从-1到2,步数为50。同理,自变量Y设置为单光线光源物体1的y位置,范围从-2到1,步数为50。Z轴由NSRA操作数定义。该操作数的输入参数为:
- Surf: 非序列群组的表面数量。对于纯非序列模式光学系统,该值始终为1
- Src#: 目标光源的物体编号(在本案例中为物体1:单光线光源)
- Splt?: 指定光线分裂是否开启(0表示不开启光线分裂)
- Pol?: 指定分析中是否包含偏振效应(0表示不包含)
- Seg#: 指定用于计算数据的光线的段编号。段0为发射光线,段1为光线在首次碰撞后的光线,段2为光线在第二次碰撞后的光线,以此类推。在我们的例子中,我们关注的是光线与物体的交点。此物体是光线首次碰撞的首个表面,因此我们指定Seg#=1
- Data:指定要为给定光线段计算哪些数据。Data=3对应于光线的Z坐标(有关更多详细信息,请参见Zemax手册的第14章)。
点击确定。将出现一张伪彩色图,它会显示CPC的Z坐标随X和Y坐标的变化情况:

为了生成上图,单光线光源的X坐标和Y坐标分别在-1到2以及-2到1的范围内变化,并根据光线与CPC表面的交点确定对应的Z坐标。点击窗口中的“文本(图示Text)”按钮,即可获取各类Z值的列表:

对于需要确定不同方向矢高的物体,可将物体绕X、Y和Z轴倾斜,然后重复上述步骤。
使用ZPL宏测量表面矢高
可通过编写简单的ZPL宏自动计算表面矢高(该宏的副本也可通过文章附件下载):

在这个宏中,将被要求输入单光线光源的X和Y方向范围,以及覆盖该范围的步数,正如在“通用绘图2D(UniversalPlot2D)”设置对话框中所做的那样。然后,使用SETNSCPOSITION关键字在指定的范围内改变单光线光源光线的X和Y位置。一旦单光线光源针对每一步完成了定位,就会使用NSRA操作数确定光线在物体表面上的交点的Z坐标,在该宏中,这是通过调用OCOD和OPEV操作数来实现的。单光线光源光线的初始位置是使用NPOS操作数确定的,并且在宏终止之前,单光线光源会被设置回这个初始位置。关于SETNSCPOSITION关键字以及OCOD、OPEV和NPOS函数的详细信息,可以在Zemax手册的第22章中找到。该宏生成的输出是针对各种单光线光源光线位置的X、Y和Z值的表格。
