Bezier曲线的构建
Bezier曲线是由法国雷诺汽车公司的P.E.Bezier于20世纪70年代初为解决汽车外型设计而提出的一种新的参数表示法,这种方法的特点是:控制点的输入与曲线输出之间的关系明确,使设计人员比较直观地估计给定条件与设计出的曲线之间的关系。当设计人员(用户)使用交互手段改变输入控制点,就能很方便地在屏幕上改变拟合曲线的形状与代表它的多项式的次数以迎合设计要求。
Bezier曲线是指用光滑参数曲线段逼近一折线多边形,它不要求给出导数,只要给出数据点就可以构造曲线,而且曲线次数严格依赖确定该段曲线的数据点个数。
注:上图是由四个控制点形成的三次Bezier曲线,曲线的形状依附于该特征多边形的形状。且特征多边形的第一条边线和最后一条边线分别表示曲线在第一个顶点和最后一个顶点的切线方向
(1) Bezier曲线的定义
其中参数t的取值范围为[0,1],i是有序集0~n中的一个整数值,表示顶点顺序号。n是多项式次数,也是曲线次数。
(2) Bezier曲线的性质
性质1:端点及端点切线
1. Bezier曲线的起点和终点分别是特征多边形的第一个顶点和最后一个顶点。
2. Bezier曲线在起点和终点处的切线分别是特征多边形的第一条边和最后一条边,且切矢的模长分别为相应边长的n倍
性质2:对称性
假如保持n次Bezier曲线诸顶点的位置不变,而把次序颠倒过来,即下标为i的点改为下标为n-i的点,则此时曲线仍不变,只不过是曲线的走向相反而已
性质3:凸包性
在几何图形上,Bezier曲线P(t)在t属于[0,1]中各点是控制点Pi的凸线性组合,即曲线落在Pi构成的凸包之中,如下图所示 。
性质4:几何不变性
这是指某些几何特性不随坐标变换而变化的特性。由Bezier曲线的定义知,曲线的形状和位置由其特征多边形的顶点Pi (i=0,1,…,n)唯一确定,与坐标系的选取无关,这就是几何不变性
(4) 几个低次Bezier曲线
由Bezier曲线的定义
我们可以推出一次、二次以及三次Bezier曲线的数学表达式,工程上应用较多的是三次Bezier曲线。下面依次讨论
1) 一次Bezier曲线
当n=1时为一次Bezier曲线,此时P(t)为一次多项式,有两个控制点,则
注:这表明一次Bezier曲线是连接起点P0和 终点P1的直线段。
2) 二次Bezier曲线
当n=2时为二次Bezier曲线,此时P(t)为二次多项式,有三个控制点,则
这表明二次Bezier曲线是一段抛物线,其矩阵形式为:
3)三次Bezier曲线
当n=3时为三次Bezier曲线,此时P(t)为三次多项式,有四个控制点,由于三次Bezier曲线是用3根折线定义的3阶曲线,则有:
用矩阵表示为:
(3)Bezier曲线的光滑连接
在几何设计中,一条Bezier曲线往往难以描述复杂的曲线形状。这是由于增加由于特征多边形的顶点数,会引起Bezier曲线次数的提高,而高次多项式又会带来计算上的困难,在实际使用中,一般不超过10次。所以有时采用分段设计,然后将各段曲线相互连接起来,并在接合处保持一定的连续条件(其关键问题是如何保证连接处具有连续性)。下面讨论两段Bezier曲线在接点处的连续条件。
由Bezier曲线性质
要保证曲线在连接点处的一阶导数连续,即
如图是三次Bezier曲线的连接.其中一条曲线由顶点P1、P2、P3、P4控制,另一条曲线由顶点P4、P5、P6、P7控制, P4是两条曲线的公共顶点。
当P3、P4 、 P5三个顶点共线时,这两条三次Bezier曲线就在顶点P4处互相切连接,在切点处具有一阶导数连续性(C1连续),而P3、P4 、 P5是它们的公切线
(4)Bezier曲线的递推(de Casteljau)算法
计算Bezier曲线上的点,可用Bezier曲线方程,但使用de Casteljau提出的递推算法则要简单得多
如图所示,设P0、P02、P2 是一条抛物线上顺序三个不同的点。过P0和P2点的两切线交于P1点,在点P02的切线交P0P1和P2P1于P01和P11 ,则如下比例成立
这是所谓抛物线的三切线定理。
当P0,P2固定,引入参数t,令上述比值为t:(1-t),即有:
当t从0变到1,第(1)、(2)式就分别表示控制二边形的第一、二条边,它们是两条一次Bezier曲线。将(1)、(2)式代入第(3)式得:
当t从0变到1时,它表示了由三顶点P0、P1、P2三点定义的一条二次Bezier曲线,记为P02
这表明:这二次Bezier曲线P02可以定义为分别由前两个顶点(P0,P1)和后两个顶点(P1,P2)决定的一次Bezier曲线的线性组合,即 。
同理,由四个控制点定义的三次Bezier曲线P03可被定义为分别由(P0,P1,P2)和(P1,P2,P3)确定的二条二次Bezier曲线的线性组合。 如下图所示:
由此得到Bezier曲线的递推计算公式: