Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SVG:关于相对路径坐标的混淆_Svg_Coordinates - Fatal编程技术网

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

我正在尝试将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.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曲线。第二个三次贝塞尔曲线的坐标应该是相对于它的起点,而不是整个贝塞尔曲线的起点