ZEMAX | 如何在ZPL中使用关键词PLOT

概述


Zemax编程语言 (Zemax Programming Language, ZPL) 中的关键词 PLOT 是一个功能强大且非常灵活的绘图工具,它可以用来对复杂的数据组进行绘图,以更清晰的展示数据的特点。这篇文章展示了一些关于关键词 PLOT 的使用示例


使用关键词PLOT


关键词PLOT可帮助您简单轻松的创建分析数据的2D图表。该关键词在进行绘图时支持对大量的参数进行自定义设置,例如添加坐标轴标签,控制刻度线位置等。

在 OpticStudio 的安装目录中,提供了一个使用关键词 PLOT 进行绘图的 ZPL 宏示例 (PLOT_TEST.ZPL)。本文使用示例文件中的库克三片镜作为示例,该文件位于Zemax根目录下的\Samples\Sequential\Objectives\(Cooke 40 degree field.zmx)。在这个示例宏文件中,使用关键词 RAYTRACE、OPDC 和 OPTH 计算了轴上视场点发出的,不同光瞳坐标位置光线的总光程 (OPL) 和光程差 (OPD)。这段宏程序的示例代码如下所示:


! 该宏程序用来测试ZPL中的关键词PLOT.
! 计算所使用的示例文件为40度库克三片镜系统
! 该文件位于\ZEMAX\Samples\Sequential\Objectives\ directory.
! Written by S. Gangadhara, 12/12/07
!
!定义系统的面数
n_surf = NSUR()

!定义用于计算的数组变量
DECLARE x1, DOUBLE, 1, 21 # 用于储存OPD的变量
DECLARE y1, DOUBLE, 1, 21
DECLARE X2, DOUBLE, 1, n_surf # 用于储存OPL的变量
DECLARE y2, DOUBLE, 1, n_surf

!使用关键词RAYTRACE,OPDC,OPTH计算数组变量
FOR i, 1, 21, 1
x1(i) = 0.1*i-1.1
RAYTRACE 0, 0, 0, 0.1*i-1.1, 1
y1(i) = OPDC()
NEXT i

FOR i, 1, n_surf, 1
x2(i) = (i - 3.0)/2.0
RAYTRACE 0, 0, 0, 0.1*i-1.1, 1
y2(i) = OPTH(i)/50. - 2.0
NEXT i


提取分析数据


其中,变量 x1 和 y1 分别存储了轴上视场点的光瞳坐标和 OPD 数据。变量 x2 和 y2 分别存储了轴上视场点的相关表面的编号和 OPL 数据。缩放x2和y2的数据以使它们可以与 x1 和 y1 的图像一起显示。更多有关 RAYTRACE 关键词和OPDC、OPTH 的信息请参考 OpticStudio 帮助系统中的“About the ZPL”一节。


! 用PLOT关键词显示结果
title$ = "PLOT TEST WITH COOKE 40 DEGREE FIELD" # 图表标题
xtitle$ = "PUPIL COORDINATE / RELATIVE SURFACE NUMBER" # X轴标签
ytitle$ = "WAVES / LENGTH" # Y轴标签
banner$ = "RESULTS GENERATED USING PLOT_TEST.ZPL" # 图标上标签
comment1$ = "DATA FOR OPD ARE EXACT" # 图表注释行1
comment2$ = "DATA FOR OPTICAL PATH LENGTH (OPL) ARE NORMALIZED" # 图表注释行2
comment3$ = "X-AXIS FOR OPL DATA IS 0.5*(SURFACE NUMBER - 2)" # 图表注释行3
comment4$ = "Y-AXIS FOR OPL DATA IS LENGTH/50 - 2" # 图表注释行 4
comment5$ = "NORMALIZATION OF THE OPL DATA WAS PERFORMED SO THAT IT" # 图表注释行 5
comment6$ = " COULD BE PLOTTED ON THE SAME GRAPH AS THE OPD DATA" # 图表注释行 6
label1$ = "OPD FOR ON-AXIS FIELD POINT" # OPD 曲线图的标签
label2$ = "OPTICAL PATH LENGTH (OPL)" # OPL 曲线图的标签
x_min = -2.0 # X-轴最小值
y_min = -2.0 # Y-轴最小值
x_max = 2.0 # X-轴最大值
y_max = 0.0 # Y-轴最大值
x_chk = 0.005 # 图表标注的X尺寸 (以显示单位表示, 其中 1.0 为窗口的X轴全宽)
y_chk = 0.005 # 图表标注的Y尺寸 (以显示单位表示)
x_tick = 0.5 # X轴刻度线距离 (以X轴单位表示)
y_tick = 0.4 # Y轴刻度线距离 (以Y轴单位表示)
x_form$ = "%4.2f" # X轴数字的字符串格式
y_form$ = "%4.2f" # Y轴数字的字符串格式
xl1 = 0.1 # 第1行的X轴起始位置 (以显示单位表示)
yl1 = 0.6 # 第1行的Y轴起始位置 (以显示单位表示)
xl2 = 0.8 # 第1行的X轴结束位置 (以显示单位表示)
yl2 = 0.6 # 第1行的Y轴结束位置 (以显示单位表示)
xl3 = 0.45 # 第2行的X轴起始位置 (以显示单位表示)
yl3 = 0.3 # 第2行的Y轴起始位置 (以显示单位表示)
xl4 = 0.45 # 第2行的X轴结束位置 (以显示单位表示)
yl4 = 0.9 # 第2行的Y轴结束位置 (以显示单位表示)
xlb1 = 0.15 # 标签1的X轴起始位置 (以显示单位表示)
xlb2 = 0.30 # 标签2的X轴起始位置 (以显示单位表示)
ylb1 = 0.65 # 标签1的Y轴起始位置 (以显示单位表示)
ylb2 = 0.35 # 标签2的Y轴起始位置 (以显示单位表示)
ang1 = 0 # 标签1沿X正向的倾斜角度 (以度表示)
ang2 = 15 # 标签2沿X轴正向的倾斜角度 (以度表示)
scl = 1 # 标签的缩放因子


初始化图表参数


PLOT NEW # 初始化图表
PLOT TITLE, title$ # 放置图表的标题
PLOT TITLEX, xtitle$ # 放置图表标题的X轴位置
PLOT TITLEY, ytitle$ # 放置图表标题的Y轴位置
PLOT BANNER, banner$ # 放置图表横幅
PLOT COMM1, comment1$ # 放置图表的注释1
PLOT COMM2, comment2$ # 放置图表的注释2
PLOT COMM3, comment3$ # 放置图表的注释3
PLOT COMM4, comment4$ # 放置图表的注释4
PLOT COMM5, comment5$ # 放置图表的注释5
PLOT COMM6, comment6$ # 放置图表的注释6
PLOT RANGEX, x_min, x_max # 定义图表的X轴范围
PLOT RANGEY, y_min, y_max # 定义图表的Y轴范围
PLOT CHECK, x_chk, y_chk # 定义图表标志的尺寸
PLOT TICK, x_tick, y_tick # 定义X轴和Y轴刻度线的距离
PLOT FORMATX, x_form$ # 定义X轴数字的格式
PLOT FORMATY, y_form$ # 定义X轴数字的格式
PLOT DATA, x1, y1, 21, 1, 1, 1 # 使用数组中的所有点在图表中绘制OPD数据, 使用颜色1 (蓝色), 设置曲线的虚线类型为1, 同时绘制曲线和标志
PLOT DATA, x2, y2, n_surf, 3, 2, 0 # 使用数组中的所有点在图表中绘制OPL数据, 使用颜色3 (红色), 设置曲线的虚线类型为2, 同时绘制曲线和标志
PLOT LINE, xl1, yl1, xl2, yl2 # 绘制横线 (line 1)
PLOT LINE, xl3, yl3, xl4, yl4 # 绘制竖线 (line 2)
PLOT LABEL, xlb1, ylb1, ang1, scl, label1$ # 在图表中放置标签1 (OPD曲线)
PLOT LABEL, xlb2, ylb2, ang2, scl, label2$ # 在图表中放置标签2 (OPL曲线)
PLOT GO # 产生图表

! 释放数组变量的内存
RELEASE x1
RELEASE y1
RELEASE x2
RELEASE y2

! 结束程序
PRINT "End of program."

END


绘制自定义图表



使用关键词PLOT


ZPL 中关键词 PLOT 具有强大而又灵活的绘图功能,它给 OpticStudio 用户提供了更多的展现数据的方法。