use cgmath::Vector3; pub struct Ray { pub orig: Vector3, pub dir: Vector3, pub time: f64, } impl Ray { pub fn new(orig: Vector3, dir: Vector3, time: f64) -> Ray { Ray { orig, dir, time } } pub fn at(&self, t: f64) -> Vector3 { self.orig + t * self.dir } } pub struct NextRay { pub attenuation: Vector3, pub ray: Ray, } impl NextRay { pub fn new(attenuation: Vector3, ray: Ray) -> NextRay { NextRay { attenuation, ray } } }