import { Bounds } from "types" /** * Get whether two bounds collide. * @param a Bounds * @param b Bounds * @returns */ export function boundsCollide(a: Bounds, b: Bounds) { return !( a.maxX < b.minX || a.minX > b.maxX || a.maxY < b.minY || a.minY > b.maxY ) } /** * Get whether the bounds of A contain the bounds of B. A perfect match will return true. * @param a Bounds * @param b Bounds * @returns */ export function boundsContain(a: Bounds, b: Bounds) { return ( a.minX < b.minX && a.minY < b.minY && a.maxY > b.maxY && a.maxX > b.maxX ) } /** * Get whether the bounds of A are contained by the bounds of B. * @param a Bounds * @param b Bounds * @returns */ export function boundsContained(a: Bounds, b: Bounds) { return boundsContain(b, a) } /** * Get whether two bounds are identical. * @param a Bounds * @param b Bounds * @returns */ export function boundsAreEqual(a: Bounds, b: Bounds) { return !( b.maxX !== a.maxX || b.minX !== a.minX || b.maxY !== a.maxY || b.minY !== a.minY ) } /** * Get whether a point is inside of a bounds. * @param A * @param b * @returns */ export function pointInBounds(A: number[], b: Bounds) { return !(A[0] < b.minX || A[0] > b.maxX || A[1] < b.minY || A[1] > b.maxY) }