ZEMAX | 如何在ZPL中使用關鍵詞PLOT

概述


Zemax編程語言 (Zemax Programming Language, ZPL) 中的關鍵詞 PLOT 是一個功能強大且非常靈活的繪圖工具,它可以用來對復雜的數據組進行繪圖,以更清晰的展示數據的特點。這篇文章展示了一些關于關鍵詞 PLOT 的使用示例


使用關鍵詞PLOT


關鍵詞PLOT可幫助您簡單輕松的創(chuàng)建分析數據的2D圖表。該關鍵詞在進行繪圖時支持對大量的參數進行自定義設置,例如添加坐標軸標簽,控制刻度線位置等。

在 OpticStudio 的安裝目錄中,提供了一個使用關鍵詞 PLOT 進行繪圖的 ZPL 宏示例 (PLOT_TEST.ZPL)。本文使用示例文件中的庫克三片鏡作為示例,該文件位于Zemax根目錄下的\Samples\Sequential\Objectives\(Cooke 40 degree field.zmx)。在這個示例宏文件中,使用關鍵詞 RAYTRACE、OPDC 和 OPTH 計算了軸上視場點發(fā)出的,不同光瞳坐標位置光線的總光程 (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 數據??s放x2和y2的數據以使它們可以與 x1 和 y1 的圖像一起顯示。更多有關 RAYTRACE 關鍵詞和OPDC、OPTH 的信息請參考 OpticStudio 幫助系統中的“About the ZPL”一節(jié)。


! 用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 用戶提供了更多的展現數據的方法。