Archive

Archive for June, 2009

三次样条曲线拟合

June 15th, 2009 4 comments

Spline曲线应用很广,在3d游戏领域,一般会被用在摄像机运动,骨骼动画压缩等方面。

Spline的生成一般是采用分段Bezier曲线拼接,这里有一个pdf文件,是我目前为止看到的关于spline生成和插值的最详细,最易懂的文档。

Spline拟合是另一个课题,也就是用尽量少的控制点,生成Spline曲线拟合给定的数据点,并把误差控制在一定范围以内。目前貌似还没有出现广泛采用的,特别有效又浅显易懂的方法。 附件里是这几天写的一个demo,采用了比较简单的算法,也就是只从给输入据点中挑选控制点,每次迭代添加一个误差最大的点,直到所有数据点的拟合误差都小于要求的值。 为了演示拟合的过程,按一次“Fit”按钮进行一次迭代,支持一次undo

spline

蓝色曲线是输入,红色曲线是拟合曲线。

下载demo

如果无法运行,你可能还需要microsoft.vc90.crt.zip

Categories: 程序/算法 Tags: