diff options
author | Julian T <julian@jtle.dk> | 2021-02-08 18:26:27 +0100 |
---|---|---|
committer | Julian T <julian@jtle.dk> | 2021-02-08 18:27:00 +0100 |
commit | 7ccc82fc0992fc23aee354d687ce009ae0523bea (patch) | |
tree | 635f7ffe386c638ef8d5ca0db81a3da8ef0f7cc0 /src/core | |
parent | dbe5f54957ddc13549a6ce822da95170aa09a0c6 (diff) |
Finish depth of field
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 |