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

问题描述 投票:0回答:1

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

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

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

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

computational-geometry curve-fitting
1个回答
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

© www.soinside.com 2019 - 2024. All rights reserved.