Berechnen der Punkte für ein shorthand/smooth SVG-Pfad Bézier-Kurve
Link: Offizielle SVG-Referenz
Hallo Männer und Frauen, ich habe einige Probleme mit der Kurzschrift (definiert durch S oder S in pathdata) bezier-Kurven definiert als SVG-Pfade. Insbesondere, wie zu berechnen, wird der erste Kontrollpunkt.
Sagen, wir haben eine curveto-Befehl mit Kontrollpunkten (X1, Y1)
und (X2, Y2)
-, endpoint - (X3, Y3)
- und Ausgangspunkt (X0, Y0)
.
Als Nächstes kommt ein shorthand/smooth curve-Befehl mit einem ersten Kontrollpunkt (X4, Y4)
und zweiten Kontrollpunkt (X5, Y5)
. Nehme an, alles ist in absoluten Koordinaten der Einfachheit halber.
Wie würde man die Berechnung der unbekannten ersten Kontrollpunkt (X4, Y4)
aus anderen bekannten Punkte?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihrem ersten Punkt ist der Letzte Punkt der vorherigen Kurve. In diesem Fall wäre es (x3, y3). Dann Ihren zweiten Punkt in der kurzen hand ist die abschließende Punkt für die Länge der Kurve das Kürzel repräsentiert.
Wenn wir übersetzen Ihre Pfade in voller Länge Versionen, die wir haben würde:
Wobei XR, YR ist das Spiegelbild des letzten Kontrollpunkt von der vorherigen Kurve über den ersten Punkt der aktuellen Kurve.
XR, YR ist nur die Reflexion von P2 zu P3 so:
kann man den letzten Kontrollpunkt aus der letzten Kurve und der Endpunkt der letzten Kurve( das ist der erste Punkt der neuen Kurve) als eine Linie, und die gespiegelte Kontrolle zeigen sollten, liegen auf dieser Linie in einem Abstand gleich dem Abstand von der letzten Kontrollpunkt, um den letzten Endpunkt
Fand ich diese. Die kürzeste Antwort, die ich zitieren kann, ist es:
Meine interpretation:
start
/end - 1
) und 2 (start + 1
/end
) berechnet wird:start
) parallel zu { die Linie, die vom Punkt 0 (start - 1
) zu Punkt 2 (start + 1
) }.end
) parallel zu { der Linie von Punkt 1 (end - 1
) zu Punkt 3 (end + 1
) }.start - 1
mitstart
oderend + 1
mitend
.