summaryrefslogtreecommitdiff
path: root/src/interval.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/interval.rs')
-rw-r--r--src/interval.rs41
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
+};