fil*_*lip 5 bezier curve-fitting
我想将带有已知端点(p0和p3)的贝塞尔曲线拟合到嘈杂的2d数据。与传统的4点贝塞尔曲线拟合相比,这似乎是一个容易解决的问题,但对于我来说仍然太难了。
有人可以指出我现有的代码或算法来找到控制点p1和p2的最佳值吗?
编辑:我要与贝塞尔曲线拟合的点来自用鼠标绘制的曲线(想象在Paint中用画笔绘制一些东西,一次长笔画可能有数百个记录点)。锚点p0和p3是预先创建的,但应该计算控制点p1和p2,以使贝塞尔曲线适合用鼠标绘制的曲线的形状。
我偶然发现了一篇名为“使用三次贝塞尔曲线最小二乘拟合的数据近似”的论文,该论文描述了一种算法来计算我正在寻找的确切事物。
在 javascript 中的实现很容易。它工作得很好,速度也很快,但产生的贝塞尔曲线并不完美。可能是我的代码中的错误,但我怀疑可以通过迭代调整贝塞尔曲线上的匹配点以更好地拟合数据来获得更好的曲线
.
编辑:事实证明,您可以使用牛顿拉夫森来优化贝塞尔曲线的每个单独的 t 值。这样做之后,曲线拟合得很好,至少对于只有少数不自相交的点的曲线,但我必须做更多的测试。
