aboutsummaryrefslogtreecommitdiff
path: root/src/core
diff options
context:
space:
mode:
authorJulian T <julian@jtle.dk>2021-02-07 00:37:58 +0100
committerJulian T <julian@jtle.dk>2021-02-07 00:37:58 +0100
commitf3f56ed5f183f8461cc91cb6430d97c725ba159c (patch)
tree32d07fc105185849b8bf6bfe1fd63bf85f976410 /src/core
parentb64c7e972c52b7d015d661866f0cf902370343e5 (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.rs10
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 {