3.1.2B样条曲线和曲面在我们工程中应用的拟合曲线,一般地说可以分为两种类型:一种是最终生成的曲线通过所有的给定型值点,比如抛物样条曲线和三次参数样条曲线等,这样的曲线适用于插值放样;另一种曲线是,它的最终结果并不一定通过给定的型值点,而只是比较好地接近这些点,这类曲线(或曲面)比较适合于外形设计。因为在外形设计中(比如汽车、船舶),初始给出的数据点往往并不精确;并且有的地方在外观上考虑是主要的,因为不是功能的要求,所以为了美观而宁可放弃个别数据点。因此不须最终生成的曲线都通过这些数据点。另一方面,考虑到在进行外形设计时应易于实时局部修改,反映直观,以便于设计者交互操作。第一类曲线在这方面就不能适应。法国的Bezier为此提出了一种新的参数曲线表示方法,因此称为Bezier曲线。后来又经过Gordon、Forrest和Riesenfeld等人的拓广、发展,提出了B样条曲线。这两种曲线都因能较好地适用于外形设计的特殊要求而获得了广泛的应用。一、Bezier曲线Bezier曲线的形状是通过一组多边折线(特征多边形)的各顶点唯一地定义出来的。在这组顶点中:(1)只有第一个顶点和最后一个顶点在曲线上;(2)其余的顶点则用于定义曲线的导数、阶次和形状;(3)第一条边和最后一条边则表示了曲线在两端点处的切线方向。P0P0P2P1P1P2P3P3P1P0P3P21.Bezier曲线的数学表达式Bezier曲线是由多项式混合函数推导出来的,通常n+1个顶点定义一个n次多项式。其数学表达式为:(0≤t≤1)式中:Pi:为各顶点的位置向量Bi,n(t):为伯恩斯坦基函数niniitBPtP0,)()(伯恩斯坦基函数的表达式为:假如规定:0=1,0!=1,则t=0:i=0,Bi,n(t)=1i0,Bi,n(t)=0P(0)=P0000)01(0!1!)0(PPnnPnininittinintB)1()!(!!)(,t=1:i=n,Bi,n(t)=1in,Bi,n(t)=0P(1)=Pn所以说,“只有第一个顶点和最后一个顶点在曲线上”。即Bezier曲线只通过多边折线的起点和终点。nnnPPnnP0)11(11!!)1(下面我们通过对基函数求导,来分析两端切矢的情况。得:)]()([)(1,1,1',tBtBntBninini101,1,1')]()([)(nininiitBtBPntP讨论:t=0:i=0:Bi-1,n-1(t)=0;Bi,n-1(t)=1。i=1:Bi-1,n-1(t)=1;Bi,n-1(t)=0。i2:Bi-1,n-1(t)=0;Bi,n-1(t)=0。(均出现0的非0次幂)ininiininittinintBttinintB11,111,1)1()!1(!)!1()()1()!()!1()!1()(t=0同理可得,当t=1时这两个式子说明:Bezier曲线在两端点处的切矢方向与特征多边形的第一条边和最后一条边相一致。)()0()0(01''PPntPP)()1(1'nnPPnP2.二次和三次Bezier曲线(1)三个顶点:P0,P1,P2可定义一条二次(n=2)Bezier曲线:其相应的混合函数为:22222,21212,120202,0)1(!0!2!2)()1(2)1(!1!1!2)()1()1(!2!0!2)(ttttBtttttBttttB所以,根据式:二次Bezier曲线的表达形式为:P(t)=(1-t)2P0+2t(1-t)P1+t2P2(0≤t≤1)niniitBPtP0,)()(根据Bezier曲线的总体性质,可讨论二次Bezier曲线的性质:P(t)=(1-t)2P0+2t(1-t)P1+t2P2P’(t)=2(t-1)P0+2(1-2t)P1+2tP2P(1/2)=1/2[P1+1/2(P0+P2)]P(0)=2(P1-P0)P(1)=2(P2-P1)P(1/2)=P2-P0P0PmP2P'(1/2)P(1/2)P1二次Bezier曲线是一条抛物线(2)四个顶点P0、P1、P2、P3可定义一条三次Bezier曲线:***3210233322120300010033036313311)1(3)1(3)1()(PPPPtttPtPttPttPttP二、B样条曲线1.从Bezier曲线到B样条曲线(1)Bezier曲线在应用中的不足:缺乏灵活性一旦确定了特征多边形的顶点数(m个),也就决定了曲线的阶次(m-1次),无法更改;控制性差当顶点数较多时,曲线的阶次将较高,此时,特征多边形对曲线形状的控制将明显减弱;不易修改由曲线的混合函数可看出,其值在开区间(0,1)内均不为零。因此,所定义之曲线在(0t1)的区间内的任何一点均要受到全部顶点的影响,这使得对曲线进行局部修改成为不可能。(而在外形设计中,局部修改是随时要进行的)为了克服Bezier曲线存在的问题,Gordon等人拓展了Bezier曲线,就外形设计的需求出发,希望新的曲线要:易于进行局部修改;更逼近特征多边形;是低阶次曲线。于是,用n次B样条基函数替换了伯恩斯坦基函数,构造了称之为B样条曲线的新型曲线。2.B样条曲线的数学表达式B样条曲线的数学表达式为:在上式中,0≤t≤1;i=0,1,2,…,m所以可以看出:B样条曲线是分段定义的。如果给定m+n+1个顶点Pi(i=0,1,2,…,m+n),则可定义m+1段n次的参数曲线。nknkkinitFPtP0,,)()(在以上表达式中:Fk,n(t)为n次B样条基函数,也称B样条分段混合函数。其表达式为:式中:0≤t≤1k=0,1,2,…,nknjnjnjnkjkntCntF01,)()1(!1)(连接全部曲线段所组成的整条曲线称为n次B样条曲线。依次用线段连接点Pi+k(k=0,1,…,n)所组成的多边折线称为B样条曲线在第i段的B特征多边形。3.二次B样条曲线在二次B样条曲线中,n=2,k=0,1,2故其基函数形式为:22,222,1222220232,021)()122(21)()1(21]!2!3)1(!2!3)2(!3!3[21)2()1(!21)(ttFtttFttttjtCtFjjj有了基函数,因此可写出二次B样条曲线的分段表达式为:(i=0,1,2,…,m)m+1段22,212,12,0)()()()(iiiiPtFPtFPtFtP写成一般的矩阵形式为:式中,Bk为分段曲线的B特征多边形的顶点:B0,B1,B2。对于第i段曲线的Bk即为:Pi,Pi+1,Pi+2连续的三个顶点。(见下图)2021022,011022121211)()(kkkBBBttBtFtPP3B:P0P0,P1,P2P2P1P1,P2,P3B:P4n=2,二次B样条曲线m+n+1个顶点,三点一段,共m+1段。i=0P0,2(t)i=1P1,2(t)二次B样条曲线的性质先对P(t)求导得:然后分别将t=0,t=0.5,t=1代入P(t)和P’(t),可得:P(0)=1/2(B0+B1),P(1)=1/2(B1+B2);P’(0)=B1-B0,P’(1)=B2-B1;P(1/2)=1/2{1/2[P(0)+P(1)]+B1}P’(1/2)=1/2(B2-B0)=P(1)-P(0)2100111211)(BBBttP与以上这些式子所表达的性质相符的曲线是何种形状:(见下图)B0P(0)P(1)MB2P(1/2)B1P'(1/2)是什么曲线?与Bezier曲线有何差别?结论:分段二次B样条曲线是一条抛物线;有n个顶点定义的二次B样条曲线,其实质上是n-2段抛物线(相邻三点定义)的连接,并在接点处达到一阶连续。(见下图)P3P0P2P1P44.三次B样条曲线分段三次B样条曲线由相邻四个顶点定义,其表达式为:P(t)=F0,3(t)•B0+F1,3(t)•B1+F2,3(t)•B2+F3,3(t)•B3(0t1)可见,由n个顶点定义的完整的三次B样条曲线是由n-3段分段曲线连接而成的。很容易证明,三次B样条曲线在连接处达到二阶连续。***B样条曲线是一种非常灵活的曲线,曲线的局部形状受相应顶点的控制很直观。这些顶点控制技术如果运用得好,可以使整个B样条曲线在某些部位满足一些特殊的技术要求。如:可以在曲线中构造一段直线;使曲线与特征多边形相切;使曲线通过指定点;指定曲线的端点;指定曲线端点的约束条件。三、B样条曲面在数学上,可以很容易将参数曲线段拓张为参数曲面片。因为无论是前面的Bezier曲线还是B样条曲线,它们都是由特征多边形控制的。而曲面是由两个方向(比如u和v)的特征多边形来决定,这两个方向的特征多边形构成特征网格。22P01Pv00P10uPP20P02P11P12PvP01PP0020uP10P0221P12P11P21P22双二次Bezier曲面和B样条曲面1.Bezier曲面给定了(m+1)(n+1)个空间点列bi,j(i=0,1,2,…,n;j=0,1,2,…,m)后,可以定义mn次Bezier曲面如下式所示:式中:(0≤u,v≤1);Bi,n(u)为n次Bernstein基函数;连接点列bi,j中相邻两点组成特征网格。nimjjimjnibvBuBvuP00,,,)()(),(在实际应用中,次数m和n均不宜超过5,否则网格对于曲面的控制力将会减弱,这同Bezier曲线的情况是相似的。其中最重要的应用是m=n=3,即双三次Bezier曲面。双三次Bezier曲面的表达式为:TTijjijiVNbNUbvBuBvuP3030,3,3,)()(),(式中:33323130232221201312111003020100232300010033036313311;1bbbbbbbbbbbbbbbbbNvvvVuuuU2.B样条曲面从B样条曲线到B样条曲面的拓展完全类似于从Bezier曲线到Bezier曲面的拓展。给定了(m+1)(n+1)个空间点列bi,j(i=0,1,2,…,n;j=0,1,2,…,m)后,可以定义mn次B样条曲面片如下式所示:nimjjimjnibvFuFvuP00,,,)()(),(同样,式中的Fi,n(u)称为n次B样条基函数族,连结bi,j组成的空间网格称为B特征网格。在实际应用中,最为重要的一种曲面是双三次B样条曲面片,此时m=n=3。其表达式为:TTVNbNUvuP),(式中:其余的[U]、[V]和[b]同Bezier曲面。014103030363133161N表达式中的矩阵展开,其实就可以得到如类似于在曲线中的混合函数。如展开[U][N]可得:上面介绍的Bezier曲面与此相同。33,3233,2233,1233,061)()1333(61)()463(61)()133(61)(uuFuuuuFuuuFuuuuF整个B样条曲面是由B样条曲面片连接而成的(这正如B样条曲线),并且在连接处达到了C²连续,这一点是由三次B样条基函数族Fi,j(u)的连续性保证的。所以,双三次B样条曲面的突出特点就在于相当轻松地解决了曲面片之间的连接问题。***