我目前正在开发一个基于网络的绘图应用程序,我使用指针的位置来生成一条线。速度决定了线条的宽度。
我的问题是浏览器事件在获取位置时不会产生干净的数据,因此宽度变得非常“抖动”,而不是柔软和平滑。
我想知道在制作绘图时平滑此类数据的最佳方法是什么?我正在考虑曲线拟合,但我不确定哪种算法在我的情况下可以更好地工作。
PS我不是每次都在画布上从头开始重画线,我只是添加“最后一部分”。
谢谢!
我目前正在开发一个基于网络的绘图应用程序,我使用指针的位置来生成一条线。速度决定了线条的宽度。
我的问题是浏览器事件在获取位置时不会产生干净的数据,因此宽度变得非常“抖动”,而不是柔软和平滑。
我想知道在制作绘图时平滑此类数据的最佳方法是什么?我正在考虑曲线拟合,但我不确定哪种算法在我的情况下可以更好地工作。
PS我不是每次都在画布上从头开始重画线,我只是添加“最后一部分”。
谢谢!
您可以尝试从 paper.js 中提取“平滑”和“简化”功能(他们的 MIT 许可证允许这样做)。它在边缘检测项目中对我很有效。在这里查看:http: //paperjs.org/tutorials/paths/smoothing-simplifying-flattening。