UNPKG

quadtree-ts

Version:

A simple quad tree implementation in TypeScript

36 lines (35 loc) 885 B
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>]; }>;