我正在完成一个使用OpenGL ES 2.0(WebGL)和JS的绘图应用程序。除非我用非常快速的动作画画,否则事情会很顺利。见下图:
这个循环是用平滑运动绘制的,但由于JS只能在特定位置获得鼠标读数,因此结果是分面的。如果你关闭鼠标平滑,这在Photoshop中会发生某种程度的影响,但显然要少得多,因为PS能够以更高的速率进行轮询。
所以,我想实现一些鼠标平滑,但我担心确保它非常有效,这样它就不会让实际的像素绘制操作陷入困境。我最初考虑使用JS能够抓取的鼠标位置来生成样条线并在读数之间进行插值以获得更平滑的结果。不过,我不确定这是否是最佳方法。如果是,我该如何确保在中间样条上采样正确的位置?我发现的大多数样条方程都没有t = [0, 1]
的均匀分布值。
非常感谢任何帮助/指导/建议。谢谢!
答案 0 :(得分:2)
Catmull-Rom可能是一个很好的尝试,如果你还没有。
http://www.mvps.org/directx/articles/catmull/
我会选择一个最小段长度,并将超过该段的段划分为1 + segmentLength / minSegmentLength子段。