mirror of
https://github.com/excalidraw/excalidraw.git
synced 2025-05-03 10:00:07 -04:00
Some checks failed
Auto release excalidraw next / Auto-release-excalidraw-next (push) Failing after 2m36s
Build Docker image / build-docker (push) Failing after 6s
Cancel previous runs / cancel (push) Failing after 1s
Publish Docker / publish-docker (push) Failing after 31s
New Sentry production release / sentry (push) Failing after 2m3s
24 lines
817 B
TypeScript
24 lines
817 B
TypeScript
import { pointFrom } from "./point";
|
|
import { lineSegment, lineSegmentIntersectionPoints } from "./segment";
|
|
|
|
import type { GlobalPoint, LineSegment, LocalPoint, Rectangle } from "./types";
|
|
|
|
export function rectangle<P extends GlobalPoint | LocalPoint>(
|
|
topLeft: P,
|
|
bottomRight: P,
|
|
): Rectangle<P> {
|
|
return [topLeft, bottomRight] as Rectangle<P>;
|
|
}
|
|
|
|
export function rectangleIntersectLineSegment<
|
|
Point extends LocalPoint | GlobalPoint,
|
|
>(r: Rectangle<Point>, l: LineSegment<Point>): Point[] {
|
|
return [
|
|
lineSegment(r[0], pointFrom(r[1][0], r[0][1])),
|
|
lineSegment(pointFrom(r[1][0], r[0][1]), r[1]),
|
|
lineSegment(r[1], pointFrom(r[0][0], r[1][1])),
|
|
lineSegment(pointFrom(r[0][0], r[1][1]), r[0]),
|
|
]
|
|
.map((s) => lineSegmentIntersectionPoints(l, s))
|
|
.filter((i): i is Point => !!i);
|
|
}
|