贝塞尔曲线拟合原理

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/shenziheng1/article/details/54410816

1.什么是贝塞尔曲线?

贝塞尔曲线所依据的最原始的数学公式,是早在1912年就广为人知的伯恩斯坦多项式。简单来说,伯恩斯坦多项式可以用来证明,在[ a, b ] 区间上所有的连续函数都可以用多项式来逼近,并且收敛性很强,也就是一致收敛。再简单点,就是一个连续函数,你可以将它写成若干个伯恩斯坦多项式相加的形式,并且,随着 n→∞,这个多项式将一致收敛到原函数,这个就是伯恩斯坦斯的逼近性质。
到了1959年,当时就职于雪铁龙的法国数学家 Paul de Casteljau 开始对伯恩斯坦多项式进行了图形化的尝试,并且提供了一种数值稳定的德卡斯特里奥(de Casteljau) 算法。根据这个算法,就可以只通过很少的控制点,去生成复杂的平滑曲线,也就是贝塞尔曲线。
而贝塞尔曲线的得名,得归功于1962年就职于雷诺的法国工程师皮埃尔·贝塞尔(Pierre Bézier),他使用这种方法来辅助汽车的车体工业设计,并且广泛宣传,因此大家才都称他为贝塞尔曲线 。

2.贝塞尔曲线是怎么画出来的?

首先,我们在平面内选3个不同线的点并且依次用线段连接。如下所示:

接着,我们在AB和BC线段上找出点D和点E,使得AD/AB = BE/BC:

再接着,连接DE,并在DE上找出一点F,使得DF/DE = AD/AB = BE/BC:

然后,根据我们高中所学的极限的知识,让选取的点D在第一条线段上从起点A,移动到终点B,找出所有点F,并将它们连起来。最后你会发现,你得到了一条非常光滑的曲线,这条就是传说中的,贝塞尔曲线。
二阶贝塞尔曲线动态演示:


三阶贝塞尔曲线动态演示:


四阶贝塞尔曲线动态演示:

五阶贝塞尔曲线动态演示:


所以贝塞尔曲线的厉害之处就在这里,从1-n阶的连续函数,他都可以计算得到一条光滑曲线。

3.贝塞尔曲线的特点和用途?

特点一:曲线通过始点和终点,并与特征多边形首末两边相切于始点和终点,中间点将曲线拉向自己。
特点二:平面离散点控制曲线的形状,改变一个离散点的坐标,曲线的形状将随之改变(点对曲线具有整体控制性)。
特点三:曲线落在特征多边形的凸包之内,它比特征多边形更趋于光滑。
特点四:贝塞尔曲线属于“平均通过”式曲线。

由于贝塞尔曲线控制简便,而且它具有很强的描述能力,因此它在工业设计上已经被广泛使用了。不仅如此,在计算机图形学领域(特别是矢量图形学),贝塞尔曲线也有着举足轻重的地位。而作为程序猿,我们经常会用贝塞尔曲线来绘图(由贝塞尔曲线画出来的图很光滑~),来做动画(很自然的动画)等等。也就是由于它可以发挥的作用领域太广了,因此我们时不时都会听到这个名字。

4.如何用贝塞尔曲线?

首先,要明确的一点是,对于贝塞尔曲线来说,最重要的点是,数据点和控制点。
数据点: 指一条路径的起始点和终止点。
控制点:控制点决定了一条路径的弯曲轨迹。
根据控制点的个数,贝塞尔曲线被分为一阶贝塞尔曲线(0个控制点)、二阶贝塞尔曲线(1个控制点)、三阶贝塞尔曲线(2个控制点)等等。
而系统给我们提供了一个叫做UIBezierPath类,用它可以画简单的圆形,椭圆,矩形,圆角矩形,也可以通过添加点去生成任意的图形,还可以简单的创建一条二阶贝塞尔曲线和三阶贝塞尔曲线。

5.参考资料

http://www.cnblogs.com/zhangrunchao/p/6178366.html
JOHNH.MATHEWS), KURTISD.FINK. 数值方法(MATLAB版)[M]. 电子工业出版社, 2005.
展开阅读全文

没有更多推荐了,返回首页