lumiere 0.2.0

A ray-tracing implementation in Rust, based on Peter Shirley's "Ray Tracing in One Weekend" series.
Documentation
use lumiere::{
    interval, material,
    object::{self, Hittable},
    ray::Ray,
    vec3::Vec3,
    Point3,
};

fn main() {
    let mut rng = rand::thread_rng();
    let material_centre = Box::new(material::Dielectric::new(1.5));

    let sphere = object::Sphere::new(
        String::from("glass ball"),
        Point3::new(2., 0., 0.),
        0.5,
        material_centre,
    );

    let origin = Vec3::new(0., -0.3, 0.);
    let direction = Vec3::new(1., 0., 0.);
    let ray = Ray::new(origin, direction, 0.);

    println!("iter 1");
    let hitrec = sphere
        .hit(&ray, &interval::Interval::new(0.0001, f64::INFINITY))
        .unwrap();
    dbg!(&hitrec);

    let scatter_result = hitrec.mat.scatter(&ray, &hitrec, &mut rng);
    dbg!(&scatter_result);

    println!("iter 2");
    let hitrec = sphere
        .hit(
            &scatter_result.scattered,
            &interval::Interval::new(0.0001, f64::INFINITY),
        )
        .unwrap();
    dbg!(&hitrec);

    let scatter_result = hitrec
        .mat
        .scatter(&scatter_result.scattered, &hitrec, &mut rng);
    dbg!(&scatter_result);
}