49 lines
978 B
Rust
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);
|
|
}
|
|
});
|
|
}
|