我有一个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
我知道它在数学上是可能的,因为它是由贝塞尔曲线定义的,它们本身可以在任意点分割而不改变曲线,但是如何计算出如何进行数学运算并生成它似乎是一项艰巨的任务。新路径字符串。
是否有任何图书馆可以提供帮助?
答案 0 :(得分:3)
从我所能发现的有很多javascript帮助从初始点绘制bezier曲线,但是我找不到逆向工程。所以我认为你有两种可能的方法,
<强> 1)强>
对曲线进行逆向工程以获得原始点,然后使用较低的t_step
重新创建曲线。下面的链接显示了它是如何完成的基本。
Reverse engineering Bezier curves
Reverse engineering a bezier curve
<强> 2)强>
虽然你可能会失去一些精确度,但我觉得应该可以使用三次样条插值来估计每个点之间的曲线。