レイトレーシングの4発目。 物体の表面で屈折する光を計算してみます。
反射光の場合とほぼ同様な処理になりますが、 物体表面の交点を新たな視点として、 トレースする向きが物体の内部側へと向かいます。 いわゆるスネルの法則で屈折率を算出するために、 物体の密度の情報を追加してます。
v5.patch メモ
$ cat v5.patch | ( cd rt ; patch -p1 ) $ cd rt $ ./cg.py eyep=[0,0,0],200,10 sec=10 name=out/reflact1 div=16 fps=2
なんだか画像が汚い感じになりましたが、 少し球体が透けて屈折して見えてる様子?
$ ./cg.py eyep=[0,0,0],200,10 sec=10 name=out/reflact2 : wh : 298508/307200(97.1%) : rest 12.53s : 2018/03/21 06:32:38 wh : 300056/307200(97.6%) : rest 10.27s : 2018/03/21 06:32:37 wh : 301597/307200(98.1%) : rest 8.03s : 2018/03/21 06:32:35 wh : 303131/307200(98.6%) : rest 5.81s : 2018/03/21 06:32:34 wh : 304676/307200(99.1%) : rest 3.59s : 2018/03/21 06:32:33 wh : 306214/307200(99.6%) : rest 1.4s : 2018/03/21 06:32:32 wh : 307200/307200(100.0%) : fin 7m 16.08s frm : 300/300(100.0%) : fin 38h 33m 5.59s
38時間半強! とにかく長時間かかりました。 球体の中にある平面部分が屈折して上に見えてるのでしょうか?