IRayTraceNormUnpolData

IRayTraceNormUnpolData は、正規化瞳座標を使用して、偏光していない光線のバッチ光線追跡を実行します。

ツールを起動して、追跡する光線の最大数、使用する光線の種類 (実光線または近軸光線)、光線追跡の終了面をユーザー側で選択します。

CreateNormUnpol (int MaxRays, RaysType rayType, int toSurface)

つづいて、AddRay 関数で光線を 1 本ずつ定義します。光線は、波長および相対視野座標と相対瞳座標で定義します。AddRay には、光路差 (OPD) を返す必要がある場合のために変数 calcOPD もあります。

AddRay (int waveNumber, double Hx, double Hy, double Px, double Py, OPDMode calcOPD)
  • calcOPD が 0 の場合、OPD は計算されません。単一光線追跡の定義に従い、光路長が返されます。その値は、無限共役の位置では、他の解析で得られる値と異なることがあります。
  • calcOPD を OPDMode.Current とした場合、この光線と以前に計算した主光線に基づいて OPD が計算されます。
  • OPDMode.CurrentAndChief の場合は、主光線が先に計算され、つづいてこの光線との OPD が計算されます。OPD を計算できるのは、光線を像面まで追跡した場合に限られる点に注意します。

詳細については、後述の「説明」を参照してください。

結果を読み取る前に、StartReadingResults() メソッドを使用する必要があります。

結果

このメソッドは、以下の値を返します。

ReadNextResult (out int rayNumber, out int ErrorCode, out int vignetteCode, out double X, out double Y, out double Z, out double L, out double M, out double N, out double l2, out double m2, out double n2, out double opd, out double intensity)
  • rayNumber
  • ErrorCode
  • vignetteCode : 光線がビネッティングされたかどうかを示します。
  • X、Y、Z : 指定した面における光線の座標。
  • L、M、N : 指定した面における光線の方向余弦。
  • l2、m2、n2 : 指定した面と光線との交点におけるその面のベクトル法線
  • opd : 光路差 (下記の「説明」を参照してください)。
  • Intensity : 光線の強度 (下記の偏光に関する説明を参照してください)。

説明 :

OPD

OPD の計算により通常の光線追跡よりも時間がかかるため、OpticStudio がこの追加の計算を実行するのは、要求された場合のみです。OPD は光路差であり、追跡を必要とする光線が 1 本ではなく 2 本であることから、OPD の計算はクライアント プログラムにとって、より複雑な処理ともなります。任意の光線の OPD を計算する場合、OpticStudio は主光線を追跡し、次にその任意の光線を追跡して、この 2 本の光線間の位相差を求めて OPD を取得します。同じ主光線を何度も追跡する (この場合は低速) のではなく、一般的に主光線を一度だけ追跡し、その主光線の位相を後続の各光線から差し引きます。

  • calcOPD が OPDMode.CurrentAndChief の場合、主光線と指定の光線の両方が必要となり、2 本の光線の位相差を現在の波長の波数で表した値が OPD になります。
  • calcOPD が OPDMode.Current の場合、最後に追跡した主光線のデータが使用されます。

したがって、主光線を変更した場合は必ず OPDMode.CurrentAndChief を使用する必要があります。それ以降の光線追跡で、主光線を再度追跡する必要がない場合は OPDMode.Current を使用します。一般的に、主光線が変更されるのは、視野座標または波長が変更された場合のみです。多数の光学解析の計算のように、多数の光線を同じ視野点から追跡する場合は、この方法の方がはるかに高速です。opd を計算できるのは最終面が像面である場合のみで、それ以外の場合、opd はゼロになります。

NormUnpol インターフェイスと DirectUnpol インターフェイスにおける偏光

2 つの非偏光光線追跡モード (NormUnpol と DirectUnpol) のどちらでも、偏光が考慮されない点に注意してください。これら 2 つのモードでは、吸収によるバルク内部透過率コーティング損失、面のフレネル反射のいずれによっても、光線強度が影響を受けません。光線の光路長がわかればバルク吸収を扱うことができますが、非偏光の光線追跡モード (NormUnpol と DirectUnpol) のどちらでもバルク吸収は考慮されていません。一方、コーティング損失とフレネル面反射による影響を求めるには、光線の電界の変化が必要であることから、偏光光線追跡が必須になります。NormUnpol と DirectUnpol の光線追跡モードでも、シーケンシャル モードのいくつかの面では、電界の変化がなくても、光線の強度が変化することがあります。このように光線強度の変化が発生する面として、ユーザー定義面 (たとえば US_FILT1)、スライド、ノンシーケンシャル面などがあります。

次へ :