UNPKG

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
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[];