// Finished in earlier steps — reuse, don't rewrite. export type Vec = { x: number; y: number }; export const vec = (x: number, y: number): Vec => ({ x, y }); export type AABB = { x: number; y: number; w: number; h: number }; export type Span = { entry: number; exit: number }; /** Step 05, finished. */ export function sweepInterval( p: number, v: number, min: number, max: number, ): Span | null { if (v === 0) { return min <= p && p <= max ? { entry: -Infinity, exit: Infinity } : null; } let t1 = (min - p) / v; let t2 = (max - p) / v; if (t1 > t2) { [t1, t2] = [t2, t1]; } return { entry: t1, exit: t2 }; }