mirror of
https://gitlab.com/soapbox-pub/ditto.git
synced 2025-12-06 03:19:46 +00:00
22 lines
628 B
TypeScript
22 lines
628 B
TypeScript
export interface Point {
|
|
x: number;
|
|
y: number;
|
|
}
|
|
|
|
export interface Dimensions {
|
|
w: number;
|
|
h: number;
|
|
}
|
|
|
|
export type Rectangle = Point & Dimensions;
|
|
|
|
export function areIntersecting(rect1: Rectangle, rect2: Rectangle, threshold = 0.5): boolean {
|
|
const r1cx = rect1.x + rect1.w / 2;
|
|
const r2cx = rect2.x + rect2.w / 2;
|
|
const r1cy = rect1.y + rect1.h / 2;
|
|
const r2cy = rect2.y + rect2.h / 2;
|
|
const dist = Math.sqrt((r2cx - r1cx) ** 2 + (r2cy - r1cy) ** 2);
|
|
const e1 = Math.sqrt(rect1.h ** 2 + rect1.w ** 2) / 2;
|
|
const e2 = Math.sqrt(rect2.h ** 2 + rect2.w ** 2) / 2;
|
|
return dist < (e1 + e2) * threshold;
|
|
}
|