Add visual debug support for arc

This commit is contained in:
Mark Tolmacs 2024-10-03 14:09:44 +02:00
parent 85611b8754
commit 2ec3374333
No known key found for this signature in database
3 changed files with 67 additions and 4 deletions

View file

@ -5,7 +5,7 @@ import {
ellipseLineIntersectionPoints,
ellipseSegmentInterceptPoints,
} from "./ellipse";
import { pointFrom, pointDistance } from "./point";
import { pointFrom, pointDistance, isPoint } from "./point";
import type { GenericPoint, Segment, Radians, Arc, Line } from "./types";
import { PRECISION } from "./utils";
@ -135,3 +135,18 @@ export function arcLineInterceptPoints<Point extends GenericPoint>(
: a.startAngle <= candidateAngle || a.endAngle >= candidateAngle;
});
}
export function isArc<Point extends GenericPoint>(v: unknown): v is Arc<Point> {
return (
v != null &&
typeof v === "object" &&
Object.hasOwn(v, "center") &&
Object.hasOwn(v, "radius") &&
Object.hasOwn(v, "startAngle") &&
Object.hasOwn(v, "endAngle") &&
isPoint((v as Arc<Point>).center) &&
typeof (v as Arc<Point>).radius === "number" &&
typeof (v as Arc<Point>).startAngle === "number" &&
typeof (v as Arc<Point>).endAngle === "number"
);
}