Files
nage/workshop/steps/06-ray-vs-aabb/given.ts
T
Schluffe 196d87eaea
CI / test (push) Failing after 1m18s
CI / benchmark (bun) (push) Skipped
CI / benchmark (deno) (push) Skipped
Add CI stuff
2026-08-27 12:46:42 +02:00

27 lines
633 B
TypeScript

// 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 };
}