从平板电脑输入绘制平滑线

时间:2009-08-28 04:14:33

标签: drawing spline

当用户在平板电脑上拖动手写笔时,您会收到一系列坐标。您希望使用平滑线近似笔的路径,仅在其后面跟踪几个采样点。你会怎么做?

换句话说,当用户使用平板电脑绘制时,您将如何呈现平滑的响应线?简单地用直线连接点是不够的。无论样本点有多近或多远,真正的绘图程序都能更好地弯曲线条。有些人甚至会让你给他们一个数字来表示要完成的平滑量,这会占用紧张的笔和手。我在哪里可以学习这些东西?

2 个答案:

答案 0 :(得分:2)

我知道这是一个老问题,但我遇到了同样的问题,我提出了两个不同的解决方案:

  • 第一种方法是使用两种分辨率:一种是当用户插入用直线连接它们的路径点时。二,当用户完成笔划时删除线条并在其上绘制和样条。这应该比直线更平滑。

  • 第二种方法是用前一个采样点的加权平均值平滑新点。所以每当你得到一个新的采样点[x1,y1]而不是直接绘制它时,你取上一个采样点[x2,y2]并用两点的加权平均值创建一个新的中间点。伪代码可能是这样的:

    newPoint = [x1,y1];    oldPoint = [x2,y2];

    point2Paint = [(x1 * 0.3)+(x2 * 0.7),(y1 * 0.3)+(y2 * 0.7)];    oldPoint = newPoint;

    加权平均值的系数为0.7和0.3(您可以更改它们以获得所需的平滑效果:)

我希望这会有所帮助

更新12月13日:这是一篇解释不同绘图方法的文章,有很好的概念可以应用(边缘平滑,贝塞尔曲线,平滑关节)

http://perfectionkills.com/exploring-canvas-drawing-techniques/

答案 1 :(得分:0)

我从来没有必须实现这些(仅用于学术目的),但您可能需要查看维基百科的interpolation文章。

摘自文章:

  

插值是一种在一组离散的已知数据点范围内构造新数据点的方法。

     

在工程和科学中,通常通过抽样或实验获得许多数据点,并尝试构建一个与这些数据点非常吻合的函数。这称为曲线拟合或回归分析。插值是曲线拟合的一个特例,其中函数必须完全通过数据点。

希望它有所帮助。