我希望将已知端点(p0和p3)的贝塞尔曲线拟合到噪声2d数据。这似乎比传统的4点贝塞尔曲线拟合更容易,但我仍然难以弄清楚。
有人能指点我现有的代码或算法来找到控制点p1和p2的最佳值吗?
编辑:我试图用贝塞尔曲线拟合的点来自用鼠标绘制的曲线(想象一下在Paint中用画笔绘制一些东西,可能有数百个记录点在一个长的中风)。预先创建锚点p0和p3,但应计算控制点p1和p2,使贝塞尔曲线符合用鼠标勾勒出的曲线形状。
答案 0 :(得分:4)
我偶然发现了一张名为"Approximation of data using cubic Bezier curve least square fitting"的文件,其中包括" M.Khan"它描述了一种计算我正在寻找的确切事物的算法。
在javascript中实现很简单。它工作得很好而且速度很快,但最终的贝塞尔曲线并不完美。可能是我的代码中的错误,但我怀疑通过迭代调整贝塞尔曲线上的匹配点可以获得更好的曲线,以更好地拟合数据。
编辑事实证明,您可以使用newton-raphson优化贝塞尔曲线的每个t值。在这样做之后,曲线非常适合,至少只有几点不能自相交的曲线,但我必须做更多的测试。