いまさらきけない光学計算第3回:面形状と導関数

この記事の内容

3: 導関数をチューニング!?

正しく光線進行(屈折)方向を計算する際、面形状だけでなく「導関数」が重要な役割を果たしていることが分かりました。では意図的に導関数を変更するとどうなるのでしょうか?これから、ユーザー定義面を使って、導関数によって変わる光線の挙動を見てみましょう。

ちなみに、「ユーザー定義面」を利用するのは、「導関数を直接変更することができるため」という1点のみの理由によります。

(注)
ユーザー定義面を利用する際、「導関数」は、CODE Vに計算を任せることも出来ますが、可能な限りユーザーが記述すべきです。CODE Vでは差分計算により導関数を求めますが、形状によっては、本来の値との差が大きくなり、正しい光線追跡が出来なくなる可能性があるためです。そのため、ここでは、導関数は必ず記述すべきもの、として取り扱います。

3-1: 正しい導関数を定義した場合


正しく面形状と導関数を定義した場合。

はじめは面形状に基づいて正しく定義した場合です。何事もなく正しく光線が屈折する様子を見て取れます。

3-2: 一定の導関数を定義した場合


導関数として単一の値を設定した場合

面形状とは無関係に、導関数としてを使ったケースです。
レンズ内部の光線の挙動をご覧下さい。平行平板を通過するように、どの光線も平行に進んでいます。

3-3: 乱数を用いて導関数を定義した場合


乱数で導関数を記述した場合

面形状とは無関係に、乱数を用いて導関数を記述した例です。面通過後の光線は、どちらへ進むか予測することができません。仮に同じ位置に光線が侵入したとしても、シミュレーション実行毎に射出方向が変わります。

3-4: 位置によって導関数を変えた場合


位置に応じて導関数を変更した場合

光線通過位置に応じて導関数を変更した場合です。これまでの例をまとめた例です。
中心付近は面形状から正しい導関数を、中間付近では同一の導関数を、外側では乱数を用いて導関数を記述しました。それぞれの通過位置によって光線の挙動が異なることが分かります。

まとめ

今回は、面形状の「導関数」をターゲットとしてその役割を調べました。いかがでしたか?
「導関数」の果たす役割は腑に落ちたでしょうか? その役割とは、

正しく光線追跡を行うために必要な交点の法線ベクトルを導くため

に必要である、この1点です。
面形状 => (偏)導関数 => 接平面内の2本のベクトル => 法線ベクトル
という流れで法線ベクトルを求めることが出来ました。この法線ベクトルは光線屈折式で使用されます。光線屈折式は3次元的な屈折計算を行う際に利用されます。

導関数を正しく定義すれば正しい屈折計算が、意図的に変更すれば法線ベクトルが変わるため本来とは異なる方向へ光線が導かれます。 「面形状と導関数」おわり。

<< 前へ | 次へ >>

目次

 


お問い合わせ