@thi.ng/distance
Version:
N-dimensional distance metrics & K-nearest neighborhoods for point queries
94 lines • 3.27 kB
TypeScript
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