use crate::vec3::{Point3, Vec3}; pub struct Ray { origin: Point3, direction: Vec3, } impl Ray { pub fn new(origin: Point3, direction: Vec3) -> Self { Self { origin, direction } } pub fn at(&self, t: f64) -> Point3 { self.origin + (t * self.direction) } pub const fn origin(&self) -> &Point3 { &self.origin } pub const fn direction(&self) -> &Vec3 { &self.direction } }