use crate::{particle_system::Scalar, Point, Vector}; pub struct Line { pub point: Point, /// Has to be normalized pub vector: Vector, } impl Line { pub fn new(point: Point, vector: Vector) -> Self { Self { point, vector: vector.normalize(), } } pub fn distance_to_point(&self, point: Point) -> Scalar { let diff = point - self.point; let lambda = diff.dot(&self.vector); (diff - lambda * self.vector).norm() } }