diff --git a/experiments/2024-12-09/src/math/vector.rs b/experiments/2024-12-09/src/math/vector.rs index 0143852b8..5a10a0886 100644 --- a/experiments/2024-12-09/src/math/vector.rs +++ b/experiments/2024-12-09/src/math/vector.rs @@ -11,17 +11,21 @@ pub struct Vector { impl Vector { pub fn magnitude(&self) -> Scalar { - self.components - .into_iter() - .map(|coord| coord * coord) - .reduce(|a, b| a + b) - .unwrap_or(Scalar::zero()) - .sqrt() + self.dot(self).sqrt() } pub fn normalize(self) -> Self { self / self.magnitude() } + + pub fn dot(&self, other: &Self) -> Scalar { + self.components + .into_iter() + .zip(other.components) + .map(|(a, b)| a * b) + .reduce(|a, b| a + b) + .unwrap_or(Scalar::zero()) + } } impl Vector<3> {