summaryrefslogtreecommitdiffstats
path: root/src/coords.rs
diff options
context:
space:
mode:
authorTavian Barnes <tavianator@tavianator.com>2020-07-06 22:24:02 -0400
committerTavian Barnes <tavianator@tavianator.com>2020-07-06 22:33:10 -0400
commit5f85a59d4be37d350bcf1ee62c25ac1f84d71770 (patch)
tree8fc7ea8e59226c5e677d7b9aef39b0b2be5f28b7 /src/coords.rs
parented4d7b7143f1a8a9602698ca3e60e18bbb4dd226 (diff)
downloadacap-5f85a59d4be37d350bcf1ee62c25ac1f84d71770.tar.xz
kd: Use a more traditional k-d tree implementation
The slight extra pruning possible in the previous implementation didn't seem to be worth it. The new, simpler implementation is also about 30% faster in most of the benchmarks. This gets rid of Coordinate{Proximity,Metric} as they're not necessary any more (and the old ExactNeighbors impl was too restrictive anyway).
Diffstat (limited to 'src/coords.rs')
-rw-r--r--src/coords.rs25
1 files changed, 1 insertions, 24 deletions
diff --git a/src/coords.rs b/src/coords.rs
index 2e292ae..7c83946 100644
--- a/src/coords.rs
+++ b/src/coords.rs
@@ -1,6 +1,6 @@
//! [Coordinate spaces](https://en.wikipedia.org/wiki/Cartesian_coordinate_system).
-use crate::distance::{Distance, Value};
+use crate::distance::Value;
/// A coordinate space.
pub trait Coordinates {
@@ -88,26 +88,3 @@ impl<T: ?Sized + Coordinates> Coordinates for &T {
(*self).coord(i)
}
}
-
-/// Types that support computing distances to raw slices of coordinates.
-pub trait CoordinateProximity<T> {
- type Distance: Distance;
-
- /// Compute the distance to a point specified by its coordinates.
- fn distance_to_coords(&self, coords: &[T]) -> Self::Distance;
-}
-
-/// Blanket [`CoordinateProximity`] implementation for references.
-impl<T: CoordinateProximity<U>, U> CoordinateProximity<U> for &T {
- type Distance = T::Distance;
-
- fn distance_to_coords(&self, coords: &[U]) -> Self::Distance {
- (*self).distance_to_coords(coords)
- }
-}
-
-/// Marker trait for coordinate proximities that are [metrics][crate::distance::Metric].
-pub trait CoordinateMetric<T>: CoordinateProximity<T> {}
-
-/// Blanket [`CoordinateMetric`] implementation for references.
-impl<T: CoordinateMetric<U>, U> CoordinateMetric<U> for &T {}