diff --git a/src/main.rs b/src/main.rs index d267182..c58146a 100644 --- a/src/main.rs +++ b/src/main.rs @@ -100,25 +100,27 @@ fn main() -> Result<(), Box> { let mut f = BufReader::new(f); load_mesh(&mut f)? }; - let m_view = ypr_to_mat(vec3(135.0 * PI / 180.0, -30.0 * PI / 180.0, 0.0f32)); - let m_camera = transpose(&m_view); - let img = render(mesh.as_slice(), |off| { - // perspective projection - let base = vec3(0.0, 0.0, -40.0); - let ray = vec3(off.x, off.y, 2.0); - - // orthographic projection - // let base = vec3(off.x, off.y, -10.0); - // let ray = vec3(0.0, 0.0, 1.0); - - (m_camera * base, m_camera * ray) - }); - let window = show_image::create_window("Raytracing", WindowOptions::default())?; - let image = ImageView::new(ImageInfo::rgb8(W as u32, H as u32), img.data()); - window.set_image("image", image)?; - window.wait_until_destroyed()?; - Ok(()) + loop { + for phi in 0..360 { + let m_view = ypr_to_mat(vec3((135.0 + phi as f32) * PI / 180.0, -30.0 * PI / 180.0, 0.0f32)); + let m_camera = transpose(&m_view); + let img = render(mesh.as_slice(), |off| { + // perspective projection + let base = vec3(0.0, 0.0, -40.0); + let ray = vec3(off.x, off.y, 2.0); + + // orthographic projection + // let base = vec3(off.x, off.y, -10.0); + // let ray = vec3(0.0, 0.0, 1.0); + + (m_camera * base, m_camera * ray) + }); + + let image = ImageView::new(ImageInfo::rgb8(W as u32, H as u32), img.data()); + window.set_image("image", image)?; + } + } } fn edge_dist(a: Vec3, b: Vec3, base: Vec3, dir: Vec3) -> f32 {