diff options
Diffstat (limited to 'src/interval.rs')
-rw-r--r-- | src/interval.rs | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/src/interval.rs b/src/interval.rs new file mode 100644 index 0000000..24b1841 --- /dev/null +++ b/src/interval.rs @@ -0,0 +1,41 @@ +pub struct Interval { + pub min: f32, + pub max: f32, +} + +impl Interval { + pub fn new(min: f32, max: f32) -> Self { + Self { min, max } + } + + pub fn size(&self) -> f32 { + self.max - self.min + } + + pub fn contains(&self, x: f32) -> bool { + self.min <= x && x <= self.max + } + + pub fn surrounds(&self, x: f32) -> bool { + self.min < x && x < self.max + } +} + +impl Default for Interval { + fn default() -> Self { + Self { + min: f32::NEG_INFINITY, + max: f32::INFINITY + } + } +} + +pub const INTERVAL_EMPTY: Interval = Interval { + min: f32::INFINITY, + max: f32::NEG_INFINITY +}; + +pub const INTERVAL_UNIVERSE: Interval = Interval { + min: f32::NEG_INFINITY, + max: f32::INFINITY +}; |