如何在 JS/SVG 中将多边形形状转换为曲线?
我已经看到了这个解决方案:http: //jsdraw2d.jsfiction.com/但这似乎是在处理 VML 而不是 SVG。
是否有开箱即用的东西可用于将多边形准确转换为路径而不会损失任何质量?
当我说路径时,我并不是指具有 >4000 个节点的路径。我的意思是一条带有曲线而不是许多节点的路径。这反过来意味着减少节点数,因为多边形将被转换为曲线。
如何在 JS/SVG 中将多边形形状转换为曲线?
我已经看到了这个解决方案:http: //jsdraw2d.jsfiction.com/但这似乎是在处理 VML 而不是 SVG。
是否有开箱即用的东西可用于将多边形准确转换为路径而不会损失任何质量?
当我说路径时,我并不是指具有 >4000 个节点的路径。我的意思是一条带有曲线而不是许多节点的路径。这反过来意味着减少节点数,因为多边形将被转换为曲线。
我假设,在多边形化时,您对曲线上的点进行了采样,并用直线将它们连接起来。逆过程是曲线拟合。
您想要通过一组点进行“Hermite 曲线拟合”。稍作搜索将帮助您。
还有更多这样的拟合算法。这是基于数学的,并且是您想要的引擎盖下的解决方案。这也是大多数此类问题的解决方法。
如果你想要一个快速的解决方案,你必须找到一个为你做这件事的库。即取一组点,并通过它们拟合一条曲线。
注意:我假设通过 4000 多个节点拟合曲线的成本会很高。你可以试试看自己的表现,因为我不确定这会有多贵。但是,如果您需要保持布尔运算的准确性,我建议您这样做。一开始您不应该将它们多边形化。失去准确性只是为了恢复准确性而付出的努力是多余的。布尔集操作可以完成,并且已经完成,而不需要对曲线数据进行多边形化。
参考链接和演示
http://en.wikipedia.org/wiki/Spline_interpolation