Rust レイトレーシング ⑦床

http://e-tipsmemo.hatenablog.com/entry/2018/02/17/000000e-tipsmemo.hatenablog.com

複数の物体を表示できるようにする。

とりあえず複数の球体をvecに入れる。
shapelistにもHITトレイトを実装することで前と同じようにhitを呼ぶだけ。

t0 ~ closest間のものだけを当たった判定とするので、カメラに対し、一番近い物体のものが代表される。

床と球体を表示する。
床は半径の大きい球体で賄う。

じつは今まで画像を上下逆に描写していたらしいので最後にひっくり返すことにした。

実行結果。
f:id:katakanan:20180205003605p:plain:w300

本当は、

#[derive(Clone)]
pub struct ShapeList {
    pub v: Vec<Box<HIT + Send + Sync>>,
}

とできるのか?と思っていたがCloneがないとかなんとかで、thread間の共有ができるのかよくわからない。
意外とハマリポイントなのかもしれない。
球体だけならこのままの方法でゴールできる。
三角形などを表示したいときに困る。

Easy Origami (Dover Origami Papercraft)

Easy Origami (Dover Origami Papercraft)

Programming Rust: Fast, Safe Systems Development

Programming Rust: Fast, Safe Systems Development