diff options
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/vector2.rs | 18 | ||||
-rw-r--r-- | src/core/vector3.rs | 2 |
2 files changed, 19 insertions, 1 deletions
diff --git a/src/core/vector2.rs b/src/core/vector2.rs index b3fa443..7e40394 100644 --- a/src/core/vector2.rs +++ b/src/core/vector2.rs @@ -2,7 +2,7 @@ //! //! This is implemented generictly with types that fit in the Number trait use crate::{Float, Number}; -use std::ops::{Sub, Add}; +use std::ops::{Sub, Add, Mul}; use std::fmt; use std::cmp::min; @@ -45,6 +45,16 @@ impl<T: Number> Add for Vector2<T> { } } +impl<T: Number> Mul<T> for Vector2<T> { + type Output = Self; + fn mul(self, op: T) -> Self::Output { + Self::new_xy( + self.x * op, + self.y * op, + ) + } +} + impl<T: Number> fmt::Display for Vector2<T> { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { f.write_fmt(format_args!("[{}, {}]", self.x, self.y)) @@ -94,6 +104,12 @@ impl Vector2i { } } +impl Vector2f { + pub fn len(&self) -> Float { + (self.x*self.x + self.y*self.y).sqrt() + } +} + #[cfg(test)] mod tests { diff --git a/src/core/vector3.rs b/src/core/vector3.rs index 1ae4db2..24b84e9 100644 --- a/src/core/vector3.rs +++ b/src/core/vector3.rs @@ -108,6 +108,8 @@ impl<T: Number> fmt::Display for Vector3<T> { } impl Vector3f { + pub const ZERO: Self = Vector3f {x: 0.0, y: 0.0, z: 0.0}; + /// Calculates the length times itself /// /// This is faster than using len * len as the square is ommited |