kdtree/src/example.rs

49 lines
978 B
Rust
Raw Permalink Normal View History

2018-03-05 10:37:48 +01:00
extern crate kdtree;
2018-03-05 11:17:50 +01:00
use std::fmt;
use kdtree::KdTree;
2018-03-05 14:10:50 +01:00
#[derive(Clone)]
2018-03-05 11:17:50 +01:00
struct Vector2 {
data: [f64; 2],
}
impl Vector2 {
pub fn new(x: f64, y: f64) -> Vector2 {
2018-03-05 14:10:50 +01:00
Vector2 { data: [x, y] }
2018-03-05 11:17:50 +01:00
}
}
impl fmt::Display for Vector2 {
fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
2018-03-05 14:10:50 +01:00
write!(formatter, "({}, {})", self.data[0], self.data[1])
2018-03-05 11:17:50 +01:00
}
}
2018-03-05 10:37:48 +01:00
fn main() {
let mut points = vec![
Vector2::new(2.0, 3.0),
Vector2::new(5.0, 4.0),
Vector2::new(9.0, 6.0),
Vector2::new(4.0, 7.0),
Vector2::new(8.0, 1.0),
Vector2::new(7.0, 2.0),
];
2022-08-16 15:40:46 +02:00
let kdtree = KdTree::min_leaf_size(
2018-03-05 14:10:50 +01:00
&mut points,
2,
|coord, ref a, ref b| a.data[coord].partial_cmp(&b.data[coord]).unwrap(),
1,
);
2018-03-05 10:37:48 +01:00
println!("{}", kdtree);
2018-03-20 16:01:01 +01:00
kdtree.traverse_leaves(&mut |locations, elements| {
for element in elements {
println!("{}", element);
}
});
2018-03-05 10:37:48 +01:00
}