PLOT キーワードを使用すると、OpticStudio で計算できるほとんどすべてのデータを対象として、カスタム仕様の解析プロットを作成できます。この記事では、PLOT キーワードを使用した ZPL マクロを紹介します。このマクロでは、サンプル ファイルと併用することで、光路長をプロットした図を出力します。コードと出力は、この記事に付属しています。
著者 Sanjay Gangadhara
序論
PLOT キーワードを使用すると、数値データの 2D プロットを容易に作成できます。このキーワードで使用できる多数の引数により、軸のラベル指定や目盛り位置の調整など、グラフを作成する際のオプションを幅広く指定できます。この記事では、PLOT キーワードを使用した ZPL マクロの実例を紹介して解説します。
ZPL で PLOT キーワードを使用する方法
PLOT キーワードを使用すると、数値データの 2D プロットを容易に作成できます。このキーワードで使用できる多数の引数により、軸のラベル指定や目盛り位置の調整など、グラフを作成する際のオプションを幅広く指定できます。
OpticStudio のデフォルト インストールには、PLOT キーワードを使用したマクロ (PLOT_TEST.ZPL) が用意されています。このマクロは、視野 40 度の Cooke トリプレットレンズのサンプル ファイル (Zemax フォルダ)\Samples\Sequential\Objectives\Cooke 40 degree field.zmx を使用します。このマクロでは、RAYTRACE キーワードおよび数値関数の OPDC と OPTH を使用して、軸上視野点から出発した光線の光路差 (OPD) と光路長 (OPL) を、瞳座標の範囲で計算します。
! This macro is intended to test out the new PLOT keyword
! for ZPL. The calculations are meant to work with the
! sample file Cooke 40 degree field.zmx located in the
! \Zemax\Samples\Sequential\Objectives\ directory.
!
! Written by S. Gangadhara, 12/12/07
!
! Determine number of surfaces in the system
n_surf = NSUR()
! Define array variables to be plotted
DECLARE x1, DOUBLE, 1, 21 # Variables to store
DECLARE y1, DOUBLE, 1, 21 # OPD data
DECLARE X2, DOUBLE, 1, n_surf # Variables to store
DECLARE y2, DOUBLE, 1, n_surf # OPL data
! Compute array variables using RAYTRACE, OPDC and 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 関数に関する詳細は、ヘルプ システムの「[プログラミング] (Programming) タブ」→「ZPL について」を参照してください。
つづいて、キーワード PLOT を使用して、ここで得られた結果をグラフィック ウィンドウにプロットします。
! Plot results to the screen using PLOT keywords
title$ = "PLOT TEST WITH COOKE 40 DEGREE FIELD"
xtitle$ = "PUPIL COORDINATE / RELATIVE SURFACE NUMBER"
ytitle$ = "WAVES / LENGTH"
banner$ = "RESULTS GENERATED USING PLOT_TEST.ZPL"
comment1$ = "DATA FOR OPD ARE EXACT"
comment2$ = "DATA FOR OPTICAL PATH LENGTH (OPL) ARE NORMALIZED"
comment3$ = "X-AXIS FOR OPL DATA IS 0.5*(SURFACE NUMBER - 2)"
comment4$ = "Y-AXIS FOR OPL DATA IS LENGTH/50 - 2"
comment5$ = "NORMALIZATION OF THE OPL DATA WAS PERFORMED SO THAT IT"
comment6$ = " COULD BE PLOTTED ON THE SAME GRAPH AS THE OPD DATA"
label1$ = "OPD FOR ON-AXIS FIELD POINT"
label2$ = "OPTICAL PATH LENGTH (OPL)"
x_min = -2.0
y_min = -2.0
x_max = 2.0
y_max = 0.0
x_chk = 0.005
y_chk = 0.005
x_tick = 0.5
y_tick = 0.4
x_form$ = "%4.2f"
y_form$ = "%4.2f"
xl1 = 0.1
yl1 = 0.6
xl2 = 0.8
yl2 = 0.6
xl3 = 0.45
yl3 = 0.3
xl4 = 0.45
yl4 = 0.9
xlb1 = 0.15
xlb2 = 0.30
ylb1 = 0.65
ylb2 = 0.35
ang1 = 0
ang2 = 15
scl = 1
PLOT NEW
PLOT TITLE, title$
PLOT TITLEX, xtitle$
PLOT TITLEY, ytitle$
PLOT BANNER, banner$
PLOT COMM1, comment1$
PLOT COMM2, comment2$
PLOT COMM3, comment3$
PLOT COMM4, comment4$
PLOT COMM5, comment5$
PLOT COMM6, comment6$
PLOT RANGEX, x_min, x_max
PLOT RANGEY, y_min, y_max
PLOT CHECK, x_chk, y_chk
PLOT TICK, x_tick, y_tick
PLOT FORMATX, x_form$
PLOT FORMATY, y_form$
PLOT DATA, x1, y1, 21, 1, 1, 1
PLOT DATA, x2, y2, n_surf, 3, 2, 0
PLOT LINE, xl1, yl1, xl2, yl2
PLOT LINE, xl3, yl3, xl4, yl4
PLOT LABEL, xlb1, ylb1, ang1, scl, label1$
PLOT LABEL, xlb2, ylb2, ang2, scl, label2$
PLOT GO
このコードの最初のセクションでは、さまざまなプロット オプションの変数を定義しています。たとえば、プロットのタイトル (title$)、プロット軸のラベル (xtitle$ と ytitle$)、プロットの範囲 (x_min、y_min、x_max、y_max) があります。つづいて、多数の PLOT キーワードを列記して、指定したタイトル、軸ラベル、範囲等に基づき、結果をグラフィック表示ウィンドウにプロットします。マクロの各 PLOT キーワードには、それぞれコメントが付記されています (ただし、この記事では表示上の理由から省略しています)。各 PLOT コマンドの詳しい説明は、ヘルプ システムの「[プログラミング] (Programming) タブ」→「ZPL について」→「キーワード (ZPL について)」→「PLOT」を参照してください。マクロを実行すると、次のようなグラフィック出力が得られます。
以上の例からもわかるとおり、PLOT キーワードを使用すると、OpticStudio で数値データを容易にグラフ表示する手段が得られます。
KA-01462
コメント
サインインしてコメントを残してください。