pex-geom
Version:
Geometry intersection and bounding volume helpers for PEX.
147 lines (146 loc) • 5.42 kB
TypeScript
/**
* Creates a new rectangle.
* @returns {import("./types.js").rect}
*/
export function create(): import("./types.js").rect;
/**
* Reset a rectangle.
* @param {import("./types.js").rect} a
* @returns {import("./types.js").rect}
*/
export function empty(a: import("./types.js").rect): import("./types.js").rect;
/**
* Copies a rectangle.
* @param {import("./types.js").rect} a
* @returns {import("./types.js").rect}
*/
export function copy(a: import("./types.js").rect): import("./types.js").rect;
/**
* Sets a rectangle to another.
* @param {import("./types.js").rect} a
* @param {import("./types.js").rect} b
* @returns {import("./types.js").rect}
*/
export function set(a: import("./types.js").rect, b: import("./types.js").rect): import("./types.js").rect;
/**
* Checks if a rectangle is empty.
* @param {import("./types.js").rect} a
* @returns {boolean}
*/
export function isEmpty(a: import("./types.js").rect): boolean;
/**
* Updates a rectangle from a list of points.
* @param {import("./types.js").rect} a
* @param {import("./types.js").vec2[] | import("./types.js").TypedArray} points
* @returns {import("./types.js").rect}
*/
export function fromPoints(a: import("./types.js").rect, points: import("./types.js").vec2[] | import("./types.js").TypedArray): import("./types.js").rect;
/**
* Returns a list of 4 points from a rectangle.
* @param {import("./types.js").rect} a
* @param {import("./types.js").vec2[]} points
* @returns {import("./types.js").vec2[]}
*/
export function getCorners(a: import("./types.js").rect, points?: import("./types.js").vec2[]): import("./types.js").vec2[];
/**
* Scales a rectangle.
* @param {import("./types.js").rect} a
* @param {number} n
* @returns {import("./types.js").rect}
*/
export function scale(a: import("./types.js").rect, n: number): import("./types.js").rect;
/**
* Sets the size of a rectangle using width and height.
* @param {import("./types.js").rect} a
* @param {import("./types.js").vec2} size
* @returns {import("./types.js").rect}
*/
export function setSize(a: import("./types.js").rect, size: import("./types.js").vec2): import("./types.js").rect;
/**
* Returns the size of a rectangle.
* @param {import("./types.js").rect} a
* @param {import("./types.js").vec2} out
* @returns {import("./types.js").vec2}
*/
export function size(a: import("./types.js").rect, out?: import("./types.js").vec2): import("./types.js").vec2;
/**
* Returns the width of a rectangle.
* @param {import("./types.js").rect} a
* @returns {number}
*/
export function width(a: import("./types.js").rect): number;
/**
* Returns the height of a rectangle.
* @param {import("./types.js").rect} a
* @returns {number}
*/
export function height(a: import("./types.js").rect): number;
/**
* Returns the aspect ratio of a rectangle.
* @param {import("./types.js").rect} a
* @returns {number}
*/
export function aspectRatio(a: import("./types.js").rect): number;
/**
* Sets the position of a rectangle.
* @param {import("./types.js").rect} a
* @param {import("./types.js").vec2} p
* @returns {import("./types.js").rect}
*/
export function setPosition(a: import("./types.js").rect, [x, y]: import("./types.js").vec2): import("./types.js").rect;
/**
* Returns the center of a rectangle.
* @param {import("./types.js").rect} a
* @param {import("./types.js").vec2} out
* @returns {import("./types.js").rect}
*/
export function center(a: import("./types.js").rect, out?: import("./types.js").vec2): import("./types.js").rect;
/**
* Checks if a point is inside a rectangle.
* @param {import("./types.js").rect} a
* @param {import("./types.js").vec2} p
* @returns {boolean}
*/
export function containsPoint(a: import("./types.js").rect, [x, y]: import("./types.js").vec2): boolean;
/**
* Checks if a rectangle is inside another rectangle.
* @param {import("./types.js").rect} a
* @param {import("./types.js").rect} b
* @returns {boolean}
*/
export function containsRect(a: import("./types.js").rect, b: import("./types.js").rect): boolean;
/**
* Includes a point in a rectangle.
* @param {import("./types.js").rect} a
* @param {import("./types.js").vec2} p
* @returns {import("./types.js").rect}
*/
export function includePoint(a: import("./types.js").rect, [x, y]: import("./types.js").vec2): import("./types.js").rect;
/**
* Includes a rectangle in another rectangle.
* @param {import("./types.js").rect} a
* @param {import("./types.js").rect} b
* @returns {import("./types.js").rect}
*/
export function includeRect(a: import("./types.js").rect, b: import("./types.js").rect): import("./types.js").rect;
/**
* Maps a point into the dimensions of a rectangle.
* @param {import("./types.js").rect} a
* @param {import("./types.js").vec2} p
* @returns {import("./types.js").vec2}
*/
export function mapPoint(a: import("./types.js").rect, p: import("./types.js").vec2): import("./types.js").vec2;
/**
* Clamps a point into the dimensions of a rectangle.
* @param {import("./types.js").rect} a
* @param {import("./types.js").vec2} p
* @returns {import("./types.js").vec2}
*/
export function clampPoint(a: import("./types.js").rect, p: import("./types.js").vec2): import("./types.js").vec2;
/**
* Prints a rect to a string.
* @param {import("./types.js").rect} a
* @param {number} [precision=4]
* @returns {string}
*/
export function toString(a: import("./types.js").rect, precision?: number): string;