Files
2026-07-11 17:48:28 +02:00

21 lines
556 B
TypeScript

import { type AABB, type Hit, rayVsAABB, type Vec } from "./given.ts";
/**
* A moving box `a` (velocity `v` over this frame) vs a static box `b`.
*
* Inflate `b` by `a`'s size (Minkowski sum), collapse `a` to its corner point,
* then reuse rayVsAABB. Return its Hit, or null for no collision this frame.
*/
export function sweptAABB(a: AABB, v: Vec, b: AABB): Hit | null {
const inflated: AABB = {
x: b.x - a.w,
y: b.y - a.h,
w: b.w + a.w,
h: b.h + a.h,
};
const point: Vec = { x: a.x, y: a.y };
return rayVsAABB(point, v, inflated);
}