quadtree-ts
Version:
A simple quad tree implementation in TypeScript
36 lines (35 loc) • 885 B
TypeScript
export declare type Point = Readonly<{
x: number;
y: number;
}>;
export declare type Unit<T> = Point & Readonly<{
data?: T;
}>;
export declare type Size = Readonly<{
width: number;
height: number;
}>;
export declare type Box = Readonly<{
location: Point;
size: Size;
}>;
export declare type Circle = Readonly<{
location: Point;
radius: number;
}>;
export declare type Shape = Box;
export interface IQuadTree<T> {
boundary: Box;
values: ReadonlyArray<Unit<T>>;
children: ReadonlyArray<IQuadTree<T>>;
add(...items: ReadonlyArray<Unit<T>>): void;
query(shape?: Shape): ReadonlyArray<Unit<T>>;
contains(point: Point): boolean;
}
export declare type Children<T> = Readonly<{
type: 'leaves';
items: Array<Unit<T>>;
}> | Readonly<{
type: 'nodes';
nodes: [IQuadTree<T>, IQuadTree<T>, IQuadTree<T>, IQuadTree<T>];
}>;