ZPL で PLOT キーワードを使用する方法

By using the PLOT keyword it is possible to create bespoje analysis plots of practically any data that can be computed by OpticStudio. In this article, we will present a ZPL macro that features the PLOT keyword. This macro works in conjunction with a sample file and will output a figure that plots Optical Path Length. The code and output are provided. 

PLOT キーワードを使用すると、OpticStudio で計算できるほとんどすべてのデータを対象として、カスタム仕様の解析プロットを作成できます。この記事では、PLOT キーワードを使用した ZPL マクロを紹介します。このマクロでは、サンプル ファイルと併用することで、光路長をプロットした図を出力します。コードと出力は、この記事に付属しています。

著者 Sanjay Gangadhara

Introduction

The PLOT keyword allows the user to easily create 2D plots of numeric data. This keyword supports a number of arguments which provide a wide range of options when generating graphics, such as the ability to add axis labels, control tick mark locations, etc. In this article, a ZPL macro featuring the PLOT keyword is shown and explained. 

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」を参照してください。マクロを実行すると、次のようなグラフィック出力が得られます。

resulting graphical output

 

以上の例からもわかるとおり、PLOT キーワードを使用すると、OpticStudio で数値データを容易にグラフ表示する手段が得られます。

 

KA-01462

この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています

コメント

0件のコメント

サインインしてコメントを残してください。