SVG:关于相对路径坐标的混淆
我正在尝试将inkscape生成的一条长SVG路径切割成几个较小的路径。具体地说,我正在沿着这条道路切割:SVG:关于相对路径坐标的混淆,svg,coordinates,Svg,Coordinates,我正在尝试将inkscape生成的一条长SVG路径切割成几个较小的路径。具体地说,我正在沿着这条道路切割: "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.072
"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"
我目前生成的输出是以下路径:
"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"
这是不对的。您可以看到输入和输出之间的差异
如您所见,几乎所有的点都是正确的,除了输出的第四条路径与原始路径的相应部分的起点不同。这可能是因为我在理解SVG路径坐标如何准确工作时出现了一些错误
我到达第四条道路的起点(39.6875,54.906251),如下所示:
我们从(42.33333,13.895833)开始。然后我们曲线到相对位置(21.166666,19.843751),从而得到绝对位置(42.33333+21.166666,13.895833+19.843751)=(63.499996,33.739584)。
然后,使用相对x坐标为9.260417的水平线延伸路径。这样就得到了新的绝对位置(63.499996+9.260417,33.739584+0)=(72.760413,33.739584)。然后曲线到相对位置(-33.072916,21.166667)。给出第四条路径的起始位置为(72.760413-33.072916,33.739584+21.166667)=(39.6875,54.906251)(有一些舍入)
为什么这是错的?我自己想出来的 问题是由于第三条曲线实际上是由两条三次曲线组成的polybezier曲线。第二个三次贝塞尔曲线的坐标应该是相对于它的起点,而不是整个贝塞尔曲线的起点