detect-collisions
Version:
Points, Lines, Boxes, Polygons (also hollow), Ellipses, Circles. RayCasting, offsets, rotation, scaling, bounding box padding, flags for static and ghost/trigger bodies
74 lines (73 loc) • 2.51 kB
TypeScript
import { Body, SATPolygon, Vector } from './model';
import { Circle } from './bodies/circle';
import { Line } from './bodies/line';
import { Point } from './bodies/point';
import { Polygon } from './bodies/polygon';
/**
* replace body with array of related convex polygons
*/
export declare function ensureConvex<TBody extends Body = Circle | Point | Polygon>(body: TBody): (TBody | SATPolygon)[];
/**
* @param polygon
* @param circle
*/
export declare function polygonInCircle(polygon: Polygon, circle: Pick<Circle, 'pos' | 'r'>): boolean;
export declare function pointInPolygon(point: Vector, polygon: Polygon): boolean;
export declare function polygonInPolygon(polygonA: Polygon, polygonB: Polygon): boolean;
/**
* https://stackoverflow.com/a/68197894/1749528
*
* @param point
* @param circle
*/
export declare function pointOnCircle(point: Vector, circle: Pick<Circle, 'pos' | 'r'>): boolean;
/**
* https://stackoverflow.com/a/68197894/1749528
*
* @param circle1
* @param circle2
*/
export declare function circleInCircle(circle1: Pick<Circle, 'pos' | 'r'>, circle2: Pick<Circle, 'pos' | 'r'>): boolean;
/**
* https://stackoverflow.com/a/68197894/1749528
*
* @param circle
* @param polygon
*/
export declare function circleInPolygon(circle: Pick<Circle, 'pos' | 'r'>, polygon: Polygon): boolean;
/**
* https://stackoverflow.com/a/68197894/1749528
*
* @param circle
* @param polygon
*/
export declare function circleOutsidePolygon(circle: Pick<Circle, 'pos' | 'r'>, polygon: Polygon): boolean;
/**
* https://stackoverflow.com/a/37225895/1749528
*
* @param line
* @param circle
*/
export declare function intersectLineCircle(line: Pick<Line, 'start' | 'end'>, { pos, r }: Pick<Circle, 'pos' | 'r'>): Vector[];
/**
* faster implementation of intersectLineLine
* https://stackoverflow.com/a/16725715/1749528
*
* @param line1
* @param line2
*/
export declare function intersectLineLineFast(line1: Pick<Line, 'start' | 'end'>, line2: Pick<Line, 'start' | 'end'>): boolean;
/**
* returns the point of intersection
* https://stackoverflow.com/a/24392281/1749528
*
* @param line1
* @param line2
*/
export declare function intersectLineLine(line1: Pick<Line, 'start' | 'end'>, line2: Pick<Line, 'start' | 'end'>): Vector | undefined;
export declare function intersectLinePolygon(line: Pick<Line, 'start' | 'end'>, polygon: Polygon): Vector[];
/**
* @param circle1
* @param circle2
*/
export declare function intersectCircleCircle(circle1: Circle, circle2: Circle): Vector[];