12章:3次元光線追跡プログラム
作成2013.05.31
3次元光線追跡
3次元光線追跡は投影投影光学系の設計・検討で重要です。
また、光と電波は数学モデルとしては同一であり、電波光学系の検討にも使用できます。
光線追跡の基礎理論
光線追跡の基礎理論については光の不思議と応用 27章:光線追跡の基礎理論
27章:光線追跡の基礎理論 に行く。
で説明しています。
VBA_Cソフト
以前は入出力をVBA、計算部分をC++(V6)で作成しました。これは、きめ細かな入出力画面をC++(V6)で作成するのがかなりきつかったためで、高速の演算部分をC++(V6)で作成し、数表やグラフ表示部分をBVAで作成して合体しました。
(1)ビルドして実行形式にしたファイルは現在も正常に動作しています。
(2)C++(V6)自体は、現在使用パソコンの状態が変化したため、互換性に問題が生じて正常には動作しなくなりました。
(3)従って、C++(V6)で作成プログラムの修正は、現在困難となりました。
VBA_Cソフトは光の不思議と応用 33章:3次元光線追跡演習プログラム
33章:3次元光線追跡演習プログラム に行く。
からダウンロードできます。
3次元光線追跡C#、WPFソフト
3次元光線追跡計算にC#、WPFアプリケーションを適用してみました。
完成ファイルは以下からダウンロードできます。
ダウンロード後は解凍してから使用してください。
[3次元光線追跡C#、WPFソフト]をダウンロード する。
解凍すると「Lens」フォルダーがあります。
「ソースファイル」フォルダー内の「Lens.sln」をダブルクリックすると「Express 2012 for Windows Desktop」が起動して、プログラムの修正・デバッグが可能です。
「実行ファイル」フォルダー内の「Lens.exe」をダブルクリックすると実行プログラムが起動して、3次元光線追跡計算が可能となります。
「実行ファイル」フォルダー内には、操作説明用データファイル
34章3次元光線追跡演習1.txt
38章ミラー_レンズ.txt
ハーフミラー.txt
仮想レンズ.txt
があります。
操作例1
34章3次元光線追跡演習1.txtを使用します。光学条件の詳細は光の不思議と応用 34章:3次元光線追跡演習(1)
34章:3次元光線追跡演習(1) に行く。
を参照願います。
(1)「Lens.exe」をダブルクリックします。
(2)メニューの「開く」を選択します。
(3)34章3次元光線追跡演習1.txtを開きます。
(4)操作の「スポットダイアグラム」を選択します。
(5)スポットダイアグラム計算結果数表が表示されます。
(6)メニューの「保存」を選択選択すると計算結果数表をタブ区切テキスト形式で保存できます。
(7)「次頁」を押すとスポットダイアグラムグラフが表示されます。
以下にグラフを示します。(図12-1)
(8)「閉じる」ボタンを押してウインドウを閉じます。
(9)操作の「波面収差」を選択します。
(10)波面収差計算結果数表が表示されます。
(11)「次頁」を押すと波面収差グラフが表示されます。
以下にグラフを示します。(図12-2)
(12)「閉じる」ボタンを押してウインドウを閉じます。
(13)操作の「光線図」を選択します。
(14)光線図計算結果数表が表示されます。
(15)「次頁」を押すと光線図グラフが表示されます。
以下にグラフを示します。(図12-3)
(16)「閉じる」ボタンを押してウインドウを閉じます。
(17)操作の「レンズ作図」を選択します。
(18)レンズ作図用数表が表示されます。
(19)「次頁」を押すとレンズ作図が表示されます。
以下にレンズ作図を示します。(図12-4)
(20)「閉じる」ボタンを押してウインドウを閉じます。
(21)操作の「レンズ間隔最適化」を選択します。
(22)収束演算成功のメッセージボックスが表示されたら「OK」ボタンを押します。
(23)数表画面はクローズボックスで閉じます。
(24)光学系基本定数表のレンズ間隔が補正されています。
(25)スポットダイアグラムを再度表示させます。
以下にスポットダイアグラムを示します。(図12-5)
(26)赤、緑、青のスポットのバラツキが補正されています。
(27)補正後の学系基本定数表はメニューの「保存」を選択して保存します。
操作例2
38章ミラー_レンズ.txtを使用します。光学条件の詳細は光の不思議と応用 38章:ミラー+レンズの光線追跡
38章:ミラー+レンズの光線追跡 に行く。
を参照願います。
(1)メニューの「保存」「開く」および操作の「スポットダイアグラム」「波面収差」「光線図」「レンズ作図」の操作は操作例1と全く同様です。
(2)この事例では、レンズ間隔ではなくレンズ曲率の最適化を行います。
(3)38章ミラー_レンズ.txtを開いた後、操作の「レンズ曲率最適化」を選択します。
(4)収束演算成功のメッセージボックスが表示されたら「OK」ボタンを押します。
(5)数表画面はクローズボックスで閉じます。
(6)光学系基本定数表のレンズ曲率が補正されています。(すでに十分追い込んでいるため、変化量が極僅かです。)
操作例3
ハーフミラー.txtを使用します。光学条件の詳細は光の不思議と応用 31章:透過傾斜平面板の3次元光線追跡計算式
31章:透過傾斜平面板の3次元光線追跡計算式 に行く。
を参照願います。
(1)メニューの「保存」「開く」および操作の「スポットダイアグラム」「波面収差」「光線図」「レンズ作図」「レンズ間隔の最適化」の操作は操作例1と全く同様です。
(2)この事例では、光線図の変化を確認します。
以下に光線図を示します。(図12-6)
操作例4
仮想レンズ.txtを使用します。光学条件の詳細は光の不思議と応用 26章:仮想レンズと近軸理論
26章:仮想レンズと近軸理論 に行く。
を参照願います。
(1)仮想レンズは、実在しないレンズであり、かなりおおざっぱな計算に使用されます。
(2)適用可能条件はtanθ=sinθ=θが成立する範囲で正しい値となります。
(3)tanθとsinθとθのどの式が正しいのか?結論はでません。なぜならtanθ=sinθ=θの成立が前提となるからです。
(4)仮想レンズと実際のレンズを組み合わせると光線追跡はどうなるのか?スポットダイアグラムは大まかな計算できます。波面収差は矛盾が生じるため正確な値をしめさなくなります。
この事例の光線図を以下に示します。(図2-7)
感想:
(1)3次元光線追跡は扱うパラメータが多く、操作も複雑なためC#_WPFへの変換は大変でした。
(2)特にレンズ間隔と曲率の最適化は難しく、やみくもに操作しても最適化はうまくいきません。
(3)パラメータ最適化には、一定の手順が必要で本プログラムは汎用性を考慮したため、最適化の手順までは自動化していません。
(4)ソースプログラムは、パラメータ最適化に関して、あまり役に立たなかった機能等も残っていたため、本C#_WPFソフトでは、少し機能を整理しました。
(5)最適化の手順まで自動化したプログラムは今後の課題です。
13章:照明光学系シミュレータ に行く。
トップページ に戻る。