2017-03-01 3 views
0

Ich versuche, einen langen SVG-Pfad zu schneiden, der von Inkscape in mehrere kleinere Pfade generiert wird. Insbesondere ich schneiden diesen Weg up:SVG: Verwirrung über relative Pfadkoordinaten

"m 42.333333,13.895833 c 0,21.166668 21.166666,19.843751 21.166666,19.843751 h 9.260417 c 0,0 19.84375,-11.906251 13.229166,7.9375 -6.614583,19.84375 -13.229166,31.75 -33.072916,21.166667 C 33.072916,52.260417 31.75,13.895833 31.75,13.895833" 

Der Ausgang I in dem Moment erzeugen, sind die folgenden Pfade:

"M 42.333333,13.895833 c 0,21.166668 21.166666,19.843751 21.166666,19.843751" 
"M 63.499999,33.739584 l 9.260417,0" 
"M 72.760416,33.739584 c 0,0 19.84375,-11.906251 13.229166,7.9375 -6.614583,19.84375 -13.229166,31.75 -33.072916,21.166667" 
"M 39.6875,54.906251 c -6.61458400000001,-2.645834 -7.93750000000001,-41.010418 -7.93750000000001,-41.010418" 

Dies ist nicht richtig. Sie können den Unterschied zwischen Eingang und Ausgang here sehen.

Wie Sie sehen können, sind fast alle Punkte korrekt, nur dass der vierte Pfad der Ausgabe nicht an dem Punkt beginnt, an dem der entsprechende Teil des ursprünglichen Pfads liegt. Dies ist wahrscheinlich auf einen Fehler in meinem Verständnis der Funktionsweise von SVG-Pfadkoordinaten zurückzuführen.

ich am Ausgangspunkt angekommen (39.6875,54.906251) für den vierten Pfad wie folgt:

Wir beginnen bei (42.33333,13.895833). Wir krümmen uns dann zur relativen Position (21.166666,19.843751), so dass uns absolute Position (42.33333 + 21.166666,13.895833 + 19.843751) = (63.499996.33.739584) gibt. Der Pfad wird dann um eine horizontale Linie mit der relativen X-Koordinate 9.260417 erweitert. So ergibt sich eine neue absolute Position (63,499996 + 9,260417, 33,739584 + 0) = (72,760413,33,739584). Wir krümmen dann zur relativen Position (-33.072916,21.166667). Geben Sie die Startposition für den vierten Pfad als (72.760413-33.072916,33.739584 + 21.166667) = (39.6875,54.906251) (mit einigen Runden).

Warum ist das falsch?

Antwort

0

Ich habe es selbst herausgefunden.

Das Problem wurde verursacht, weil die dritte Kurve tatsächlich ein Polybezier ist, das aus 2 kubischen Kurven besteht. Die Koordinaten dieses zweiten kubischen Beziers sollten relativ zu seinem Startpunkt und nicht zum Startpunkt des vollständigen Polybeziers sein.