#include using namespace wfl; void main() { Start(); WaveField a(256, 256, 10e-6); a.SetGaussian(0.5e-3, 50); //===== フレネル回折計算 for (int i = 1; i <= 3; i++) { WaveField b = a; //オブジェクトbに開口aをコピーする double d = 20e-3 * i; //dは伝搬距離 b.FresnelProp(d); //フレネル回折でbを距離dだけ伝搬する b.Normalize(); char fname[80]; //伝搬距離を入れたファイル名を作成 sprintf(fname, "Diffraction-%d.bmp", (int)(d/1e-3)); b.SaveAsGrayBmp(fname, INTENSITY); //回折像(強度像)の保存 printf("回折距離:%2.0lf[mm] サンプリング領域の大きさ:%4.2lf×%4.2lf [mm^2]\n", d/1e-3, b.GetWidth()/1e-3, b.GetHeight()/1e-3); } }