1

我有一个 SVG 路径,格式如下:

M352.793,422 C323.175,422 299.164,397.99 299.164,368.371 C299.164,338.753 323.175,314.742 352.793,314.742 C382.411,314.742 406.422,338.753 406.422,368.371 C406.422,397.99 382.411,422 352.793,422 z

我想在不改变形状的情况下添加任意数量的点,均匀分布,所以最终得到这样的结果:

M352.793,422 C337.895,422 324.416,415.925 314.698,406.118 C305.095,396.427 299.164,383.092 299.164,368.371 C299.164,352.91 305.707,338.978 316.174,329.191 C325.759,320.228 338.635,314.742 352.793,314.742 C366.299,314.742 378.639,319.735 388.068,327.975 C399.316,337.806 406.422,352.259 406.422,368.371 C406.422,383.21 400.395,396.641 390.656,406.351 C380.956,416.021 367.572,422 352.793,422 z

我知道这在数学上是可能的,因为它是由贝塞尔曲线定义的,它本身可以在任意点分割,而不改变曲线,但是弄清楚如何进行数学运算并生成新路径似乎是一项艰巨的任务细绳。

有没有可以提供帮助的图书馆?

4

1 回答 1

3

从我能找到的内容来看,有很多关于从初始点绘制贝塞尔曲线的 javascript 帮助,但是我没有找到用于逆向工程的帮助。所以我认为你有两种可能的方法,

1)

对曲线进行逆向工程以获得原始点,然后用较低的t_step. 下面的链接显示了它是如何完成的基本信息。

逆向工程贝塞尔曲线

对贝塞尔曲线进行逆向工程

2)

尽管您可能会失去一些精度,但我觉得应该可以使用三次样条插值来估计每个点之间的曲线。

样条插值

于 2013-01-07T00:50:38.280 回答