Vector Art: Bezier Curve Modi #195

Closed
opened 2026-09-21 06:14:09 +02:00 by admin · 1 comment

So momentan der Status:

  • knoten ohne bezier
  • knoten mit bezier (spitzer knoten, beide bezier handles frei bewegbar)
  • knoten mit bezier (glatter knoten, beide bezier handles gespiegelt, aber länge darf unterschiedlich sein)
  • knoten mit bezier (symetrischer knoten, beide bezier handles gespiegelt inkl. gleicher länge)

Bitte die beiden Modi die fehlen auch noch implementieren.

Außerdem: Es gibt das Tool "Pen": das verhält sich beim erstellen eigenartig: es werden Bezier Kurven erzeugt, aber nur "halbe" (sprich, es wird nur ein Handle angezeigt, und glatt/symetrisch sind diese dann dementsprechend auch nicht) - das bitte auch nochmal überarbeiten. Im Worstcase, anstelle eines "Pen"-Tools, einfach ein Polygon Tool machen, wo einfach nur Punkte ohne Bezier gesetzt werden.

So momentan der Status: - [x] knoten ohne bezier - [ ] knoten mit bezier (spitzer knoten, beide bezier handles frei bewegbar) - [ ] knoten mit bezier (glatter knoten, beide bezier handles gespiegelt, aber länge darf unterschiedlich sein) - [x] knoten mit bezier (symetrischer knoten, beide bezier handles gespiegelt inkl. gleicher länge) Bitte die beiden Modi die fehlen auch noch implementieren. Außerdem: Es gibt das Tool "Pen": das verhält sich beim erstellen eigenartig: es werden Bezier Kurven erzeugt, aber nur "halbe" (sprich, es wird nur ein Handle angezeigt, und glatt/symetrisch sind diese dann dementsprechend auch nicht) - das bitte auch nochmal überarbeiten. Im Worstcase, anstelle eines "Pen"-Tools, einfach ein Polygon Tool machen, wo einfach nur Punkte ohne Bezier gesetzt werden.
admin added this to the Development project 2026-09-21 06:14:09 +02:00
admin moved this to Next in Development on 2026-09-21 06:14:15 +02:00
Owner

Umgesetzt in 3ff7e91, Wiki in 102ab47.

Der Pen-Bug: withHandleMoved hat den Gegengriff nur gespiegelt, wenn es ihn schon gab. Ein frisch gesetzter Punkt hat noch keinen in, also entstand beim Ziehen nur out – die halbe Kurve. Jetzt zieht der Pen beide Griffe gespiegelt heraus, der Punkt ist danach Symmetric. Ein einfacher Klick setzt weiterhin einen Punkt ohne Griffe. Ein Polygon-Werkzeug als Notlösung war damit nicht nötig.

Die vier Punkttypen

Typ Griffe Einen Griff ziehen …
Straight keine –
Corner frei lässt den anderen stehen
Smooth auf einer Linie dreht den anderen mit, er behält seine Länge
Symmetric auf einer Linie, gleich lang spiegelt den anderen exakt
  • Im Modell hat ein Punkt ein optionales mode, fehlt es, ist er eine Ecke. Der Modus steckt nicht im Fingerabdruck, weil er kein Pixel ändert.
  • Im Header steht ein Menü „Point: …“ für den zuletzt angeklickten oder gesetzten Punkt, der gefüllt gezeichnet wird. Ein Wechsel ist ein Undo-Schritt. Text statt vier Icons, weil das UI-Toolkit keine Tooltips kennt.
  • Ein Punkt ohne Griffe bekommt beim Wechsel auf einen gebogenen Typ Griffe entlang seiner Nachbarn.
  • Ein Punkt auf einer Kurve ist Smooth. Symmetrische Nachbarn werden dabei Smooth, weil die Teilung einen ihrer Griffe verkürzt.
  • Alt-Klick schaltet weiter zwischen Straight und Symmetric.

Nebenfund: Das alte Alt-Rund nahm am Ende einer offenen Linie den Punkt vom anderen Ende als Nachbarn, die Griffe standen schief. Behoben, ein Unit-Test hält es fest.

Achtung bei bestehenden Zeichnungen: Punkte mit Griffen gelten jetzt als Corner, bisher hat jedes Ziehen gespiegelt. Pixel ändert das keine.

Tests

./check.sh            → 129 Files, 1917 Tests, CHECK EXIT 0   (vorher 1903)
GM_STEPS=47 (frisch)  → ALL PASSED – 39 checks   (vorher 32)
  • 14 neue Unit-Tests, 7 neue e2e-Checks (Block 47g, Nutzerweg für alle vier Typen).
  • Zwei Gegenproben greifen: Pen ohne 'symmetric' → 3 Checks fallen; ohne Smooth-Zweig → 1 Unit-Test und 1 e2e-Check.
  • Check-Summe 1195 in README und Wiki ist gerechnet (1188 + 7), gemessen wird sie im CI-Lauf.

Wiki: Vector Art (Tabelle der Typen, Point-Menü, Pen), Keyboard, Architecture, Development.

Umgesetzt in 3ff7e91, Wiki in 102ab47. **Der Pen-Bug:** `withHandleMoved` hat den Gegengriff nur gespiegelt, wenn es ihn schon gab. Ein frisch gesetzter Punkt hat noch keinen `in`, also entstand beim Ziehen nur `out` – die halbe Kurve. Jetzt zieht der Pen beide Griffe gespiegelt heraus, der Punkt ist danach **Symmetric**. Ein einfacher Klick setzt weiterhin einen Punkt ohne Griffe. Ein Polygon-Werkzeug als Notlösung war damit nicht nötig. **Die vier Punkttypen** | Typ | Griffe | Einen Griff ziehen … | |---|---|---| | Straight | keine | – | | Corner | frei | lässt den anderen stehen | | Smooth | auf einer Linie | dreht den anderen mit, er behält seine Länge | | Symmetric | auf einer Linie, gleich lang | spiegelt den anderen exakt | - Im Modell hat ein Punkt ein optionales `mode`, fehlt es, ist er eine Ecke. Der Modus steckt nicht im Fingerabdruck, weil er kein Pixel ändert. - Im Header steht ein Menü **„Point: …“** für den zuletzt angeklickten oder gesetzten Punkt, der gefüllt gezeichnet wird. Ein Wechsel ist ein Undo-Schritt. Text statt vier Icons, weil das UI-Toolkit keine Tooltips kennt. - Ein Punkt ohne Griffe bekommt beim Wechsel auf einen gebogenen Typ Griffe entlang seiner Nachbarn. - Ein Punkt auf einer Kurve ist Smooth. Symmetrische Nachbarn werden dabei Smooth, weil die Teilung einen ihrer Griffe verkürzt. - Alt-Klick schaltet weiter zwischen Straight und Symmetric. **Nebenfund:** Das alte Alt-Rund nahm am Ende einer offenen Linie den Punkt vom anderen Ende als Nachbarn, die Griffe standen schief. Behoben, ein Unit-Test hält es fest. **Achtung bei bestehenden Zeichnungen:** Punkte mit Griffen gelten jetzt als Corner, bisher hat jedes Ziehen gespiegelt. Pixel ändert das keine. **Tests** ``` ./check.sh → 129 Files, 1917 Tests, CHECK EXIT 0 (vorher 1903) GM_STEPS=47 (frisch) → ALL PASSED – 39 checks (vorher 32) ``` - 14 neue Unit-Tests, 7 neue e2e-Checks (Block 47g, Nutzerweg für alle vier Typen). - Zwei Gegenproben greifen: Pen ohne `'symmetric'` → 3 Checks fallen; ohne Smooth-Zweig → 1 Unit-Test und 1 e2e-Check. - Check-Summe **1195** in README und Wiki ist gerechnet (1188 + 7), gemessen wird sie im CI-Lauf. Wiki: Vector Art (Tabelle der Typen, Point-Menü, Pen), Keyboard, Architecture, Development.
admin moved this to Done in Development on 2026-09-21 06:53:29 +02:00
Sign in to join this conversation.
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: meleki/feuerwerk#195