kdtree/src/example.rs

49 lines
978 B
Rust

extern crate kdtree;
use std::fmt;
use kdtree::KdTree;
#[derive(Clone)]
struct Vector2 {
data: [f64; 2],
}
impl Vector2 {
pub fn new(x: f64, y: f64) -> Vector2 {
Vector2 { data: [x, y] }
}
}
impl fmt::Display for Vector2 {
fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
write!(formatter, "({}, {})", self.data[0], self.data[1])
}
}
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),
];
let kdtree = KdTree::min_leaf_size(
&mut points,
2,
|coord, ref a, ref b| a.data[coord].partial_cmp(&b.data[coord]).unwrap(),
1,
);
println!("{}", kdtree);
kdtree.traverse_leaves(&mut |locations, elements| {
for element in elements {
println!("{}", element);
}
});
}