diff options
author | Julian T <julian@jtle.dk> | 2021-02-07 00:37:58 +0100 |
---|---|---|
committer | Julian T <julian@jtle.dk> | 2021-02-07 00:37:58 +0100 |
commit | f3f56ed5f183f8461cc91cb6430d97c725ba159c (patch) | |
tree | 32d07fc105185849b8bf6bfe1fd63bf85f976410 /src/core | |
parent | b64c7e972c52b7d015d661866f0cf902370343e5 (diff) |
Move to double to avoid rounding error
This rounding errors seems to happen when adding floats very close to 1
to a relatively large number.
325.0 + 0.99999034 = 326.0
This is a problem as this sample should be counted at the 325 pixel.
However this will be a lesser problem when filtering is implemented.
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/vector2.rs | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/core/vector2.rs b/src/core/vector2.rs index 858068e..b3fa443 100644 --- a/src/core/vector2.rs +++ b/src/core/vector2.rs @@ -4,6 +4,7 @@ use crate::{Float, Number}; use std::ops::{Sub, Add}; use std::fmt; +use std::cmp::min; #[derive(Clone, Copy)] pub struct Vector2<T: Number> { @@ -84,6 +85,15 @@ impl From<Vector2f> for Vector2i { } } +impl Vector2i { + pub fn cap(&self, x: i32, y: i32) -> Self { + Self::new_xy( + min(self.x, x), + min(self.y, y), + ) + } +} + #[cfg(test)] mod tests { |