UNPKG

sigma

Version:

A JavaScript library dedicated to graph drawing.

69 lines (68 loc) 1.84 kB
import { NodeKey } from "graphology-types"; import { PlainObject } from "../types"; export interface Boundaries { x: number; y: number; width: number; height: number; } export interface Rectangle { x1: number; y1: number; x2: number; y2: number; height: number; } export interface Vector { x: number; y: number; } /** * Geometry helpers. */ /** * Function returning whether the given rectangle is axis-aligned. * * @param {Rectangle} rect * @return {boolean} */ export declare function isRectangleAligned(rect: Rectangle): boolean; /** * Function returning the smallest rectangle that contains the given rectangle, and that is aligned with the axis. * * @param {Rectangle} rect * @return {Rectangle} */ export declare function getCircumscribedAlignedRectangle(rect: Rectangle): Rectangle; /** * * @param x1 * @param y1 * @param w * @param qx * @param qy * @param qw * @param qh */ export declare function squareCollidesWithQuad(x1: number, y1: number, w: number, qx: number, qy: number, qw: number, qh: number): boolean; export declare function rectangleCollidesWithQuad(x1: number, y1: number, w: number, h: number, qx: number, qy: number, qw: number, qh: number): boolean; /** * QuadTree class. * * @constructor * @param {object} boundaries - The graph boundaries. */ export default class QuadTree { data: Float32Array; containers: PlainObject<NodeKey[]>; cache: NodeKey[] | null; lastRectangle: Rectangle | null; constructor(params?: { boundaries?: Boundaries; }); add(key: NodeKey, x: number, y: number, size: number): QuadTree; resize(boundaries: Boundaries): void; clear(): QuadTree; point(x: number, y: number): NodeKey[]; rectangle(x1: number, y1: number, x2: number, y2: number, height: number): NodeKey[]; }