Rust レイトレーシング ④ 球体


sphereとshape_opを追加した。

shpereは色を持つ。ついでにColorにnewメンバ関数を追加ておく。


光が当たったところを記録する。hit関数によって返される。当たった点pと法線ベクトルnと光源からの距離t。


後々のためにHIT Traitを定義。「HIT Traitを実装しているものを引数にとる。」のようにできる。
hitはhitヒットしていないかもしれないので、Option型で返す。
rustbyexample.com
ダメそうだったらNoneを返す。


HIT Traitの実装。球と直線が交わるか計算。
使わない引数・変数は _hogeとするか、そのものを_にするかしないと、コンパイラから警告がでる。


matchを使うことで、Optionで帰ってくるものを綺麗に書ける。いちいちboolを返してtrueなら~という二度手間感がない。



球を追加する。

実行結果。
f:id:katakanan:20180130105946p:plain:w300
f:id:katakanan:20180130110736p:plain
よさそう。


Programming Rust: Fast, Safe Systems Development

Programming Rust: Fast, Safe Systems Development