【发布时间】:2011-09-08 07:40:13
【问题描述】:
我想在 iphone 中平滑一些手绘线。 我在 http://webdocs.cs.ualberta.ca/~graphics/books/GraphicsGems/gems/FitCurves.c
但是,我发现有些贝塞尔曲线是错误的,第二个控制点和终点无效。 以前有人遇到过同样的问题吗? 谢谢。
【问题讨论】:
-
您必须更加具体。举个例子。
我想在 iphone 中平滑一些手绘线。 我在 http://webdocs.cs.ualberta.ca/~graphics/books/GraphicsGems/gems/FitCurves.c
但是,我发现有些贝塞尔曲线是错误的,第二个控制点和终点无效。 以前有人遇到过同样的问题吗? 谢谢。
【问题讨论】:
贝塞尔曲线并非设计为通过提供的顶点! 它们旨在塑造一条受控制点影响的平滑曲线。
首先,您必须决定是否要在缺失点之间进行插值, 或者如果你想过滤非平滑数据:
过滤
您应该查看具有较小平均窗口的“滑动平均”。 (尝试 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 上搜索三次插值以获得如何计算三次多边形(有时称为三次样条)的详细说明。
【讨论】: