作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想将具有已知端点(p0 和 p3)的贝塞尔曲线拟合到嘈杂的二维数据。这似乎比传统的 4 点贝塞尔曲线拟合更简单,但我仍然难以弄清楚。
有人可以指出我现有的代码或算法来找到控制点 p1 和 p2 的最佳值吗?
编辑 :我试图用贝塞尔曲线拟合的点来自用鼠标绘制的曲线(想象一下在 Paint 中用画笔画一些东西,一次长笔画可能有数百个记录点)。 anchor p0 和 p3 是预先创建的,但应计算控制点 p1 和 p2,以便贝塞尔曲线适合用鼠标绘制的曲线的形状。
最佳答案
我偶然发现了一篇名为 "Approximation of data using cubic Bezier curve least square fitting" 的论文由“M.Khan”撰写,它描述了一种算法来计算我正在寻找的确切事物。
在 javascript 中的实现很容易。它工作得很好,速度也很快,但产生的贝塞尔曲线并不完美。可能是我的代码中的一个错误,但我怀疑可以通过迭代调整贝塞尔曲线上的匹配点以更好地拟合数据来获得更好的曲线 .
编辑:事实证明,您可以使用 newton-raphson 来优化贝塞尔曲线的每个单独的 t 值。这样做之后,曲线拟合得很好,至少对于只有少数不自相交的点的曲线,但我必须做更多的测试。
关于curve-fitting - 具有已知端点的贝塞尔曲线拟合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42315048/
我是一名优秀的程序员,十分优秀!