UNPKG

@thi.ng/distance

Version:

N-dimensional distance metrics & K-nearest neighborhoods for point queries

94 lines 3.27 kB
import type { IDeref } from "@thi.ng/api"; import type { ReadonlyVec } from "@thi.ng/vectors"; import type { IDistance, INeighborhood, Neighbor } from "./api.js"; /** * A {@link INeighborhood} implementation for radial neighbor queries around a * given target location, initial query radius and {@link IDistance} metric to * determine proximity. Unbounded and unsorted version of {@link KNearest}. * * @remarks * Qualifying neighbors will be accumulated in order of processing via an * internal array and can be obtained via {@link Radial.deref} or * {@link Radial.values}. * * @typeParam D - spatial position for distance metric * @typeParam T - indexed value */ export declare class Radial<D, T> implements INeighborhood<D, T>, IDeref<Neighbor<T>[]> { readonly dist: IDistance<D>; target: D; radius: number; protected _r: number; protected _items: [number, T][]; constructor(dist: IDistance<D>, target: D, radius?: number); /** * Clears current results. */ reset(): this; /** * Resets search/reference position and clears current results. * * @param target */ setTarget(target: D): void; /** * Resets search/query radius and clears current results. * * @param r */ setRadius(r: number): void; /** * Returns an array of current neighbor result tuples (each `[dist, val]`). * * @remarks * Use {@link Radial.values} to obtain result values **without** their * distance metrics. */ deref(): [number, T][]; /** * Similar to {@link Radial.deref}, but returns array of result values **without** * their distance metrics. */ values(): T[]; includesDistance(d: number, eucledian?: boolean): boolean; includesPosition(pos: D): boolean; consider(pos: D, val: T): number; } /** * Defines a {@link Radial} instance for arbitrary length vector positions * and, by default, using an infinite region radius and {@link DIST_SQ} distance * metric. * * @param p - * @param r - * @param dist - */ export declare const radial: <T>(p: ReadonlyVec, r?: number, dist?: import("./squared.js").Squared<ReadonlyVec>) => Radial<ReadonlyVec, T>; /** * Defines a {@link Radial} instance for 2D vector positions and, by default, * using an infinite region radius and {@link DIST_SQ2} distance metric. * * @param p - * @param r - * @param dist - */ export declare const radial2: <T>(p: ReadonlyVec, r?: number, dist?: import("./squared.js").Squared<ReadonlyVec>) => Radial<ReadonlyVec, T>; /** * Defines a {@link Radial} instance for 3D vector positions, by default, * using an infinite region radius and {@link DIST_SQ3} distance metric. * * @param p - * @param r - * @param dist - */ export declare const radial3: <T>(p: ReadonlyVec, r?: number, dist?: import("./squared.js").Squared<ReadonlyVec>) => Radial<ReadonlyVec, T>; /** * Defines a {@link Radial} instance for numeric positions and, by default, * using an infinite region radius and {@link DIST_SQ1} distance metric. * * @param p - * @param r - * @param dist - */ export declare const radialN: <T>(p: number, r?: number, dist?: import("./squared.js").Squared<number>) => Radial<number, T>; //# sourceMappingURL=radial.d.ts.map