pub trait Distance<F: Float>: Clone + Send + Sync + Unpin {
    // Required method
    fn distance<D: Dimension>(
        &self,
        a: ArrayView<'_, F, D>,
        b: ArrayView<'_, F, D>
    ) -> F;

    // Provided methods
    fn rdistance<D: Dimension>(
        &self,
        a: ArrayView<'_, F, D>,
        b: ArrayView<'_, F, D>
    ) -> F { ... }
    fn rdist_to_dist(&self, rdist: F) -> F { ... }
    fn dist_to_rdist(&self, dist: F) -> F { ... }
}
Expand description

A distance function that can be used in spatial algorithms such as nearest neighbour.

Required Methods§

source

fn distance<D: Dimension>( &self, a: ArrayView<'_, F, D>, b: ArrayView<'_, F, D> ) -> F

Computes the distance between two points. For most spatial algorithms to work correctly, this metric must satisfy the Triangle Inequality.

Panics if the points have different dimensions.

Provided Methods§

source

fn rdistance<D: Dimension>( &self, a: ArrayView<'_, F, D>, b: ArrayView<'_, F, D> ) -> F

A faster version of the distance metric that keeps the order of the distance function. That is, dist(a, b) > dist(c, d) implies rdist(a, b) > rdist(c, d). For most algorithms this is the same as distance. Unlike distance, this function does not need to satisfy the Triangle Inequality.

source

fn rdist_to_dist(&self, rdist: F) -> F

Converts the result of rdistance to distance

source

fn dist_to_rdist(&self, dist: F) -> F

Converts the result of distance to rdistance

Object Safety§

This trait is not object safe.

Implementors§

source§

impl<F: Float> Distance<F> for L1Dist

source§

impl<F: Float> Distance<F> for L2Dist

source§

impl<F: Float> Distance<F> for LInfDist

source§

impl<F: Float> Distance<F> for LpDist<F>