From 86303936ab3180828b984ebb256bab8e69dab5cf Mon Sep 17 00:00:00 2001 From: Julian T Date: Sat, 30 Jan 2021 15:37:07 +0100 Subject: Finished initial film, reorganization and started work on shapes --- src/bound.rs | 108 ----------------------------------------------------------- 1 file changed, 108 deletions(-) delete mode 100644 src/bound.rs (limited to 'src/bound.rs') diff --git a/src/bound.rs b/src/bound.rs deleted file mode 100644 index ab0e703..0000000 --- a/src/bound.rs +++ /dev/null @@ -1,108 +0,0 @@ -use crate::{Number, Float}; -use crate::vector::*; - -pub struct Bound2 { - pub min: Vector2, - pub max: Vector2 -} - -pub type Bound2i = Bound2; -pub type Bound2f = Bound2; - -fn min (a: T, b: T) -> T { - if b < a { - return b; - } - a -} - -fn max (a: T, b: T) -> T { - if b > a { - return b; - } - a -} - -impl Bound2 { - pub fn new(p0: &Vector2, p1: &Vector2) -> Self { - let min = Vector2::new_xy(min(p0.x, p1.x), min(p0.y, p1.y)); - let max = Vector2::new_xy(max(p0.x, p1.x), max(p0.y, p1.y)); - - Self { min, max } - } - - pub fn new_xyxy(x1: T, y1: T, x2: T, y2: T) -> Self { - Self::new( - &Vector2::new_xy(x1, y1), - &Vector2::new_xy(x2, y2), - ) - } - - pub fn diagonal(&self) -> Vector2 { - self.max - self.min - } - - pub fn area(&self) -> T { - let diag = self.diagonal(); - return diag.x * diag.y; - } -} - -impl From<&Bound2i> for Bound2f { - fn from(b: &Bound2i) -> Self { - Self { - min: Vector2f::from(b.min), - max: Vector2f::from(b.max), - } - } -} - -impl From<&Bound2f> for Bound2i { - fn from(b: &Bound2f) -> Self { - Self { - min: Vector2i::from(b.min), - max: Vector2i::from(b.max), - } - } -} - -pub fn intersect(a: &Bound2, b: &Bound2) -> Bound2 { - Bound2::new( - &Vector2::new_xy(max(a.min.x, b.min.x), max(a.min.y, b.min.y)), - &Vector2::new_xy(min(a.max.x, b.max.x), min(a.max.y, b.max.y)), - ) -} - -#[cfg(test)] -mod tests { - use super::*; - - fn create_test() -> Bound2 { - Bound2::new( - &Vector2::new_xy(1, 2), - &Vector2::new_xy(10, 3) - ) - } - - #[test] - fn area() { - let b = create_test(); - - assert!(b.area() == 9); - } - - #[test] - fn intersect_test() { - let b1 = Bound2i::new_xyxy(10, 10, 20, 20); - let b2 = Bound2i::new_xyxy(2, 11, 22, 17); - - let b = intersect(&b1, &b2); - - assert!( - b.min.x == 10 && - b.min.y == 11 && - b.max.x == 20 && - b.max.y == 17 - ) - } -} -- cgit v1.2.3