我想在iphone中平滑一些手绘线条。 我使用了以下代码 http://webdocs.cs.ualberta.ca/~graphics/books/GraphicsGems/gems/FitCurves.c
但是,我发现有些bezier弯曲错了,第二个控制点和终点无效。 以前有人有同样的问题吗? 感谢。
答案 0 :(得分:2)
Bezier曲线不是设计用于通过提供的顶点! 它们被设计成通过控制点塑造受影响的平滑曲线。
首先,您必须决定是否要在缺失点之间进行插值, 或者如果您想过滤非平滑数据:
过滤
您应该使用小平均窗口查看“滑动平均值”。 (尝试5-10像素)。 其工作原理如下:(查找wiki以获取详细说明)
我在这里使用10点的平均窗口:
首先计算点0-9的平均值,然后输出结果作为结果点0
然后计算点1-10的平均值和输出,结果1
等等。
插值的 如果要使用平滑曲线在(缺失)点之间进行插值,可以使用分段三次样条:
通过3个顶点计算立方多边形的系数。
首先计算立方多边形:
Point [0] - Point [2],但只能从Point [0]到Point [1]绘制输出
然后你继续前进一步:通过
计算
点[1] - 点[3],但是只从p1到p2绘制。
等等。
您需要在维基上搜索三次插值,以获得如何计算立方多边形(有时称为三次样条)的详细说明。