贝赛尔曲线及其应用全面解析
1.概念
贝塞尔曲线(Bezier curve),又称贝兹曲线或贝济埃曲线,是应用于二维图形应用程序的数学曲线。一般的矢量图形软件通过它来精确画出曲线,一条贝塞尔曲线由路径点和控制点确定,控制点是可拖动的支点,线段像可伸缩的皮筋,我们在绘图工具上看到的钢笔工具就是来做这种矢量曲线的。贝塞尔曲线是计算机图形学中相当重要的参数曲线,在一些比较成熟的位图软件中也有贝塞尔曲线工具,如PhotoShop等。
通俗一点讲,大家每个人的Windows电脑自带的画图软件就有贝赛尔曲线,如下图所示:
这是一条三次贝赛尔曲线。我们在画图工具中选中曲线模式(红色箭头所指),将鼠标从左拖到右边(起始点、结束点,为该曲线的路径点),然后在左下方、右上方(为该曲线的控制点)分别点一下鼠标左键,就形成了上图这条贝赛尔曲线。大家马上就可以通过你系统自带的画图软件来感受一下什么是贝赛尔曲线。下面从数学角度描述一下贝赛尔曲线的基本概念。
上文说到了“画图”软件使用的曲线是一个“三次曲线”,那么这个三次是什么意思?实际上,三次贝塞尔曲线就表示控制点有两个,而二次贝赛尔曲线就表示控制点只有一个,以此类推。本文将着重讨论二次贝赛尔曲线和三次贝塞尔曲线。后文使用的程序语言均为JavaScript。
1.1二次方公式
二次方贝兹曲线的路径由给定点P0(起始点)、P1(控制点)、P2(结束点)的函数B(t)描述:
B(t)=(1−t)2P0+2t(1−t)P1+t2P2,t∈[0,1]
1.2三次方公式
P0、P1、P2、P3四个点在平面或在三维空间中定义了三次方贝兹曲线。曲线起始于P0走向P1,并从P2的方向来到P3。P1和P2是两个控制点(一般不会经过控制点P1或P2,除非是直线),这两个点只是在那里提供方向资讯。曲线开始于P0,结束于P3:
B(t)=P0(1−t)3+3P1t(1−t)2+3P22(1−t)+P3t3,t∈[0,1]
大家如果读到这里对这两个公式看的一头雾水的,可以看一下下面这段提示说明。如果对矩阵运算以及代数掌握较好,对这两个公式的表述没什么疑问的读者,可以跳过下面这段提示说明。
对贝塞尔曲线公式的详细说明
上面两个公式实际上是对一个矩阵运算(向量运算)的描述。那么什么是一个向量运算呢,举个最简单的例子:有一个坐标点P1坐标为(0,0),一个P2坐标为(1,1),P3坐标为(1,1),以(0,0)为原点建立向量坐标系,则可以得出P0,P1,P2的关系为: P1+