UNPKG

@thi.ng/geom-accel

Version:

n-D spatial indexing data structures with a shared ES6 Map/Set-like API

49 lines 2.04 kB
import type { Fn, ICopy, IEmpty, Maybe, Pair } from "@thi.ng/api"; import type { DistanceFn, ReadonlyVec } from "@thi.ng/vectors"; import type { IRegionQuery, ISpatialMap } from "./api.js"; type MaybeKdNode<K extends ReadonlyVec, V> = Maybe<KdNode<K, V>>; export declare class KdNode<K extends ReadonlyVec, V> { d: number; parent?: KdNode<K, V>; l?: KdNode<K, V>; r?: KdNode<K, V>; k: K; v: V; constructor(parent: MaybeKdNode<K, V>, dim: number, key: K, val: V); get height(): number; } /** * https://en.wikipedia.org/wiki/K-d_tree * * Partially based on: * https://github.com/ubilabs/kd-tree-javascript * */ export declare class KdTreeMap<K extends ReadonlyVec, V> implements ICopy<KdTreeMap<K, V>>, IEmpty<KdTreeMap<K, V>>, IRegionQuery<K, V, number>, ISpatialMap<K, V> { readonly distanceFn: DistanceFn; readonly dim: number; protected root: MaybeKdNode<K, V>; protected _size: number; constructor(dim: number, pairs?: Iterable<Pair<K, V>>, distanceFn?: DistanceFn); [Symbol.iterator](): Generator<Pair<K, V>, void, unknown>; keys(): Generator<K, void, unknown>; values(): IterableIterator<V>; get size(): number; get height(): number; get ratio(): number; copy(): KdTreeMap<K, V>; clear(): void; empty(): KdTreeMap<K, V>; set(key: K, val: V, eps?: number): boolean; into(pairs: Iterable<Pair<K, V>>, eps?: number): boolean; remove(key: K): boolean; has(key: K, eps?: number): boolean; get(key: K, eps?: number): V | undefined; query(q: K, maxDist: number, limit?: number, acc?: Pair<K, V>[]): Pair<K, V>[]; queryKeys(q: K, maxDist: number, limit?: number, acc?: K[]): K[]; queryValues(q: K, maxDist: number, limit?: number, acc?: V[]): V[]; protected doSelect<T>(q: K, f: Fn<KdNode<K, V>, T>, maxDist: number, maxNum?: number, acc?: T[]): T[]; protected buildTree(points: Pair<K, V>[], depth: number, parent?: KdNode<K, V>): KdNode<K, V> | undefined; } export {}; //# sourceMappingURL=kd-tree-map.d.ts.map