2011-09-08 241 views
1

我想在iphone中平滑一些手画线条。 我已经使用以下代码中 http://webdocs.cs.ualberta.ca/~graphics/books/GraphicsGems/gems/FitCurves.c平滑贝塞尔曲线

但是,我发现,一些贝塞尔曲线是错误的,第二个控制点和结束点是无效的。 以前有人有过同样的问题吗? 谢谢。

+0

你必须更具体。举个例子。 –

+0

请参阅[这个答案](http://stackoverflow.com/questions/7211719/curve-fitting-a-series-of-line-segments/7211779#7211779)。 –

回答

2

贝塞尔曲线没有设计去提供的顶点! 它们被设计成通过控制点形成受影响的的平滑曲线

首先,你必须决定是否要失分, 之间进行插值,或者如果您要过滤非平稳的数据:

过滤

你应该看看“滑动平均值”用小平均窗口。 (尝试5 - 10像素)。 这种工作方式如下:(找维基进行了详细的描述)

我在这里使用的10个点的平均窗口:
开始由平均分0的计算 - 9,和输出其结果作为结果点0
然后计算点1 - 10的平均值并输出,结果为1
等等。

插值 如果你想使用平滑的曲线(失踪)点之间进行插值,可以使用一块 - 智者三次样条:

您可以通过3个顶点计算立方多边形的系数。 您可以通过以下方法计算三次多边形:
Point [0] - Point [2],但您仅从Point [0]到Point [1]绘制输出。
然后你移动一步:并通过
计算Point [1] - Point [3],但是你只能从p1到p2绘制。 依此类推。

您需要在wiki上搜索三次插值,以获得详细解释如何计算三次多边形(有时称为三次样条)。