SVG在Javascript中将多边形转换为曲线转换

时间:2013-08-14 10:11:28

标签: computational-geometry curve-fitting

如何在JS / SVG中将多边形形状转换为曲线?

我已经看到了这个解决方案:http://jsdraw2d.jsfiction.com/但这似乎是在处理VML而不是SVG。

是否有开箱即用的东西可以用来准确地将多边形转换为路径而不会有任何质量损失?

当我说路径时,我并不是指具有> 4000个节点的路径。我的意思是曲线而不是许多节点的路径。这反过来意味着减少节点数,因为多边形将被转换为曲线。

1 个答案:

答案 0 :(得分:1)

我假设,在进行多边形化时,您在曲线上采样点,并用直线连接它们。 反向过程是曲线拟合。

你想做一个“通过一组点的Hermite拟合曲线”。一点点搜索可以帮助你。

还有更多这样的拟合算法。这是基于数学的,并根据您的需求提供解决方案。这也是解决大多数此类问题的方法。

如果你想要一个快速解决方案,你必须找到一个为你做这个的库。即取一组点,并通过它们拟合曲线。

注意:我认为通过超过4000个节点拟合曲线将会很昂贵。你可以尝试一下,看看自己的表现,因为我不确定这会有多大的代价。但是,我建议如果你需要保持布尔运算的准确性。你不应该首先对它们进行多边形化。只是为了获得准确而失去准确性只是努力的冗余。布尔集设置操作可以在不进行曲线数据多边形化的情况下完成。

链接以供参考和演示

http://en.wikipedia.org/wiki/Spline_interpolation

http://www.math.ucla.edu/~baker/java/hoefer/Spline.htm

http://www.math.ucla.edu/~baker/java/hoefer/Lagrange.htm