
use crate::vec3::Vec3;

#[derive(Copy, Clone)]
pub struct Ray{
    pub orig: Vec3,
    pub dir: Vec3,
}

impl Ray{
    pub fn at(&self, t: f32) -> Vec3 {
        self.orig + self.dir*t
    }
}

#[cfg(test)]
mod test{
    use super::*;

    #[test]
    fn check_lerp(){
        let ray = Ray{
            orig: Vec3::new(0.0, 0.0, 0.0),
            dir: Vec3::new(1.0, 1.0, 0.0)
        };
        let half = ray.at(0.5);
        assert_eq!(
            half,
            Vec3::new(0.5, 0.5, 0.0)
        );
    }
}
