sigma
Version:
A JavaScript library dedicated to graph drawing.
69 lines (68 loc) • 1.84 kB
TypeScript
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[];
}