1

我想在 iphone 中平滑一些手绘线。我在 http://webdocs.cs.ualberta.ca/~graphics/books/GraphicsGems/gems/FitCurves.c中使用了以下代码

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

4

1 回答 1

2

贝塞尔曲线并非旨在通过提供的顶点!它们旨在塑造受控制点影响的平滑曲线。

首先,您必须决定是否要在缺失点之间进行插值,或者是否要过滤非平滑数据:

过滤

您应该查看具有较小平均窗口的“滑动平均”。(尝试 5 - 10 像素)。其工作原理如下:(查找 wiki 以获取详细说明)

我在这里使用 10 个点的平均窗口:
首先计算点 0 - 9 的平均值,并将结果作为结果点 0 输出,
然后计算点 1 - 10 的平均值并输出,结果 1
等等。

插值 如果你想使用平滑曲线在(缺失的)点之间进行插值,你可以使用分段三次样条:

您通过 3 个顶点计算三次多边形的系数。您首先通过以下方式计算三次多边形:
Point[0] - Point[2],但您仅从 Point[0] 到 Point[1] 绘制输出。
然后您继续前进:并通过
Point[1] - Point[3] 进行计算,但您仅从 p1 绘制到 p2。等等。

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

于 2012-11-21T22:37:27.930 回答