Crates.io | quadtree_rs |
lib.rs | quadtree_rs |
version | 0.1.3 |
source | src |
created_at | 2019-04-06 15:21:07.038613 |
updated_at | 2023-06-13 23:15:27.541914 |
description | Point/region Quadtree with support for overlapping regions. |
homepage | https://github.com/ambuc/quadtree |
repository | https://github.com/ambuc/quadtree |
max_upload_size | |
id | 126176 |
size | 154,960 |
Point/region Quadtree with support for overlapping regions.
For documentation, see docs.rs/quadtree_rs.
use quadtree_rs::{area::AreaBuilder, point::Point, Quadtree};
// Instantiate a new quadtree which associates String values with u64
// coordinates.
let mut qt = Quadtree::<u64, String>::new(/*depth=*/4);
// A depth of four means a square with width (and height) 2^4.
assert_eq!(qt.width(), 16);
// Associate the value "foo" with a rectangle of size 2x1, anchored at (0, 0).
let region_a = AreaBuilder::default()
.anchor(Point {x: 0, y: 0})
.dimensions((2, 1))
.build().unwrap();
qt.insert(region_a, "foo".to_string());
// Query over a region of size 2x2, anchored at (1, 0).
let region_b = AreaBuilder::default()
.anchor(Point {x: 1, y: 0})
.dimensions((2, 2))
.build().unwrap();
let mut query = qt.query(region_b);
// The query region (region_b) intersects the region "foo" is associated with
// (region_a), so the query iterator returns "foo" by reference.
assert_eq!(query.next().unwrap().value_ref(), "foo");
Please file an issue on GitHub.
See Cargo.toml
.
See CONTRIBUTING.md
and NOTES.md
This project is licensed under the Apache 2.0 license.
This is not an official Google product.