thunderdome/
thunderdome.rs1use geo_types::{Point, Polygon, line_string};
6use rstared::AABB;
7use rstared::RTreed;
8use thunderdome::Arena;
9
10fn main() {
11 let polygon_arena: Arena<Polygon<f64>> = Arena::new();
14
15 let mut rtreed = RTreed::new(polygon_arena);
17
18 let first = rtreed.push(Polygon::new(
21 line_string![
22 (x: 0.0, y: 0.0),
23 (x: 2.0, y: 0.5),
24 (x: 2.5, y: 2.0),
25 (x: 1.0, y: 2.5),
26 (x: 0.0, y: 1.0),
27 (x: 0.0, y: 0.0),
28 ],
29 vec![],
30 ));
31 rtreed.push(Polygon::new(
32 line_string![
33 (x: 2.0, y: 2.0),
34 (x: 5.0, y: 2.5),
35 (x: 4.5, y: 4.0),
36 (x: 3.0, y: 5.0),
37 (x: 2.0, y: 2.0),
38 ],
39 vec![],
40 ));
41
42 assert_eq!(
44 rtreed
45 .rtree()
46 .locate_in_envelope(AABB::from_corners(
47 Point::new(0.0, 0.0),
48 Point::new(5.0, 5.0),
49 ))
50 .count(),
51 2
52 );
53
54 rtreed.remove(&first);
56
57 assert_eq!(
60 rtreed
61 .rtree()
62 .locate_in_envelope(AABB::from_corners(
63 Point::new(0.0, 0.0),
64 Point::new(5.0, 5.0),
65 ))
66 .count(),
67 1
68 );
69}
70
71#[test]
72fn test() {
73 main();
74}