4章:光線追跡計算プログラムのソース公開と修正

    作成2015.07.07

  1. 元のプログラム
     使用環境の変化により光線追跡計算プログラムの修正が必要となりました。
    (1)区分:光の不思議と応用 2010.10.28作成開始2010.11.26完成
    (2)章:33章:3次元光線追跡演習プログラム
    (3)プログラム:3次元光線追跡演習プログラム
    *上記プログラムをベースにしました。


  2. 修正箇所
    (1)DLLの保存場所:C:\Program Files\vba_c_optics → C:\VBA_C_APP に変更

    (2)f1=fopen("IN_FM.txt","r");のコンパイルエラー
     errno_t err=fopen_s(&f1,"IN_FM.txt","r");に修正(同様の修正箇所が多数箇所ありました。)

    (3)sprintf(s1,"%f\t",X);のコンパイルエラー
    m=sprintf_s(s1,256,"%f\t",X);に修正(同様の修正箇所が多数箇所ありました。)

    (4)strcpy( CaR[i-6],(const char *)FIN[6][i+11]);のコンパイルエラー
    strncpy_s( CaR[i-6],(const char *)FIN[6][i+11],100);に修正

    *fopenとsprintfは純粋なC言語の関数ですが、若干修正されたようです。

    (5)//N次元Gauss-Newton法のルーチンvoid CAL_DP(int NaR,int* NoaR,double*
    *評価光線がX=0,、Y=0、U=0、V=0(位置と角度がゼロ)の時、計算異常が発生。
    *評価光線がX=0,、Y=0、U=0、V=0の場合は、計算から除外処理を追加しました。

    (6)//N次元Gauss-Newton法のルーチン2void CAL_DP2(int NaR,int* NoaR,double*
    *評価光線がX=0,、Y=0、U=0、V=0(位置と角度がゼロ)の時、計算異常が発生。
    *評価光線がX=0,、Y=0、U=0、V=0の場合は、計算から除外処理を追加しました。

    *時計算異常の発生箇所まで明確に解析しませんでしたが、光線追跡の計算でsqrt(x)の計算を行っており、xの値が極僅かでもマイナスになると計算異常となることが予想されます。
    *非常に僅かですが計算値がC++(V6)でビルドしたDLLと異なっています。
    *光線追跡計算プログラムは作成時に悪戦苦闘しており、どれが対応するソースなのか不明確となり確認が大変でした。
    *計算異常の原因解析も大変でした。


  3. 光線追跡計算プログラムのダウンロード
     光線追跡計算プログラムは以下からダウンロードできます。
     ダウンロード後は解凍してから使用してください。
     
    [光線追跡計算プログラム]をダウンロードする。
     解凍すると「光線追跡」フォルダーとVBA_C_APP光線追跡.xlsとVBA_C_APP光線追跡-2.xlsがあります。

    *使用方法は光の不思議と応用の34章、35章、38章を参照願います。




5章:照度分布計算プログラムのソース公開と修正に行く。

トップページに戻る。