diff -r 09f62bb046ef -r 7f5a591e1c43 rust/landgen/src/outline.rs --- a/rust/landgen/src/outline.rs Mon Nov 05 21:21:53 2018 +0300 +++ b/rust/landgen/src/outline.rs Mon Nov 05 22:43:58 2018 +0300 @@ -1,7 +1,7 @@ use itertools::Itertools; use std::cmp::min; -use integral_geometry::{Line, Ray, Point, Polygon, Rect, Size}; +use integral_geometry::{Line, Ray, Point, Polygon, Rect, RectInclusive, Size}; use land2d::Land2D; use outline_template::OutlineTemplate; @@ -10,14 +10,14 @@ pub islands: Vec, pub fill_points: Vec, pub size: Size, - pub play_box: Rect, - intersections_box: Rect, + pub play_box: RectInclusive, + intersections_box: RectInclusive, } impl OutlinePoints { pub fn from_outline_template>( outline_template: &OutlineTemplate, - play_box: Rect, + play_box: RectInclusive, size: Size, random_numbers: &mut I, ) -> Self { @@ -38,7 +38,7 @@ }) .collect(), fill_points: outline_template.fill_points.clone(), - intersections_box: Rect::at_origin(size) + intersections_box: RectInclusive::at_origin(size) .with_margin(size.to_square().width as i32 * -2), } } @@ -73,7 +73,11 @@ } #[inline] - fn solve_intersection(intersections_box: &Rect, ray: &Ray, edge: &Line) -> Option<(i32, u32)> + fn solve_intersection( + intersections_box: &RectInclusive, + ray: &Ray, + edge: &Line + ) -> Option<(i32, u32)> { let edge_dir = edge.scaled_direction(); let aqpb = ray.direction.cross(edge_dir) as i64; @@ -302,15 +306,16 @@ #[test()] fn points_test() { + let size = Size::square(100); let mut points = OutlinePoints { islands: vec![ Polygon::new(&[Point::new(0, 0), Point::new(20, 0), Point::new(30, 30)]), Polygon::new(&[Point::new(10, 15), Point::new(15, 20), Point::new(20, 15)]), ], fill_points: vec![Point::new(1, 1)], - play_box: Rect::from_box(0, 100, 0, 100).with_margin(10), + play_box: RectInclusive::at_origin(size).with_margin(10), size: Size::square(100), - intersections_box: Rect::from_box(0, 0, 100, 100), + intersections_box: RectInclusive::at_origin(size), }; let segments: Vec = points.segments_iter().collect();