2D: Ellipse, Spline und Bezier als neue Zeichenwerkzeuge

Ellipse (zwei Bounding-Box-Ecken, achsparallel), Spline (Wegpunkte, geglättet
via Catmull-Rom, wie Polylinie mit rundem statt geradem Verlauf) und Bezier
(klassische manuelle Kontrollpunkt-Kette: Anker/Griff/Griff je Segment).

Neue Drawing2DGeom-Formen + Mathe-Helfer (tools/curves.ts). Rendering
tessellliert zu Linien-/Polygon-Primitiven (wie Polylinie/Rechteck) statt
eigenem SVG-Primitiv — dadurch funktionieren DXF-/Print-SVG-Export und
Hit-Testing ohne Änderung mit. Griff-Editieren (2D-PlanView + 3D-Viewport),
Verschieben/Skalieren, Snapping (Ellipse-Mittelpunkt, Bezier/Spline-Konturen)
und Georef-Rebase entsprechend erweitert.
This commit is contained in:
2026-08-22 01:45:32 +02:00
parent c8ac5a3d89
commit 121cb5a372
27 changed files with 1299 additions and 7 deletions
+6
View File
@@ -106,6 +106,12 @@ export function translateProject(project: Project, dx: number, dy: number): Proj
return { ...d, geom: { ...g, center: shift(g.center, dx, dy) } };
case "arc":
return { ...d, geom: { ...g, center: shift(g.center, dx, dy) } };
case "ellipse":
return { ...d, geom: { ...g, center: shift(g.center, dx, dy) } };
case "bezier":
return { ...d, geom: { ...g, pts: shiftAll(g.pts, dx, dy) } };
case "spline":
return { ...d, geom: { ...g, pts: shiftAll(g.pts, dx, dy) } };
case "text":
return { ...d, geom: { ...g, at: shift(g.at, dx, dy) } };
case "image":