Expand description
k-dimensional tree.
§Usage
// construct kd-tree
let kdtree = kd_tree::KdTree::build_by_ordered_float(vec![
[1.0, 2.0, 3.0],
[3.0, 1.0, 2.0],
[2.0, 3.0, 1.0],
]);
// search the nearest neighbor
let found = kdtree.nearest(&[3.1, 0.9, 2.1]).unwrap();
assert_eq!(found.item, &[3.0, 1.0, 2.0]);
// search k-nearest neighbors
let found = kdtree.nearests(&[1.5, 2.5, 1.8], 2);
assert_eq!(found[0].item, &[2.0, 3.0, 1.0]);
assert_eq!(found[1].item, &[1.0, 2.0, 3.0]);
// search points within a sphere
let found = kdtree.within_radius(&[2.0, 1.5, 2.5], 1.5);
assert_eq!(found.len(), 2);
assert!(found.iter().any(|&&p| p == [1.0, 2.0, 3.0]));
assert!(found.iter().any(|&&p| p == [3.0, 1.0, 2.0]));
Structs§
- Item
AndDistance - KdIndex
TreeN - This type refers a slice of items,
[T]
, and contains kd-tree of indices to the items,KdTree<usize, N>
. UnlikeKdSliceN::sort
,KdIndexTreeN::build
doesn’t sort input items. - KdSliceN
- A slice of kd-tree.
This type implements
std::ops::Deref
to[T]
. This is an unsized type, meaning that it must always be used as a reference. For an owned version of this type, seeKdTree
. - KdTreeN
- An owned kd-tree.
This type implements
std::ops::Deref
toKdSlice
.
Traits§
- KdPoint
- A trait to represent k-dimensional point.
Type Aliases§
- KdIndex
Tree - KdIndex
Tree1 - KdIndex
Tree2 - KdIndex
Tree3 - KdIndex
Tree4 - KdIndex
Tree5 - KdIndex
Tree6 - KdIndex
Tree7 - KdIndex
Tree8 - KdMap
- kd-tree of key-value pairs.
- KdMap
Slice - kd-tree slice of key-value pairs.
- KdSlice
- KdSlice1
- KdSlice2
- KdSlice3
- KdSlice4
- KdSlice5
- KdSlice6
- KdSlice7
- KdSlice8
- KdTree
- KdTree1
- KdTree2
- KdTree3
- KdTree4
- KdTree5
- KdTree6
- KdTree7
- KdTree8