1、第四章第四章 曲线和曲面曲线和曲面 第一节第一节 曲线和曲面表示的基础知识曲线和曲面表示的基础知识第二节第二节 HermiteHermite多项式多项式 第三节第三节 CoonsCoons曲面曲面 第四节第四节 BezierBezier曲线和曲面曲线和曲面 第五节第五节 B B样条曲线和曲面样条曲线和曲面 第一节第一节 曲线和曲面表示的基础知识曲线和曲面表示的基础知识 曲线和曲面参数表示曲线和曲面参数表示(1 1)与坐标轴相关的,不便于进行坐标变换;)与坐标轴相关的,不便于进行坐标变换;(2 2)会出现斜率为无穷大的情况;)会出现斜率为无穷大的情况;(3 3)难以灵活地构造复杂的曲线、曲面)难
2、以灵活地构造复杂的曲线、曲面(4 4)非参数的显示方程只能描述平面曲线,空)非参数的显示方程只能描述平面曲线,空间曲线必须定义为两张柱面的交线。间曲线必须定义为两张柱面的交线。(5 5)假如我们使用非参数化函数,在某个)假如我们使用非参数化函数,在某个xoyxoy坐坐标系里一条曲线,一些标系里一条曲线,一些x x值对应多个值对应多个y y值,而一值,而一些些y y值对应多个值对应多个x x值。值。)(xfy0),(yxf 在空间曲线的参数表示中,曲在空间曲线的参数表示中,曲线上每一点的坐标均要表示成某个线上每一点的坐标均要表示成某个参数参数t t的一个函数式,则曲线上每的一个函数式,则曲线上每
3、一点笛卡尔坐标参数式是:一点笛卡尔坐标参数式是:,)(txx)(tyy)(tzz 把三个方程合写到一起,曲线把三个方程合写到一起,曲线上一点坐标的矢量表示是:上一点坐标的矢量表示是:)()()()(tztytxt P关于参数关于参数t t的切矢量或导函数是:的切矢量或导函数是:)()()()(tztytxt P曲面的参数方程形式为曲面的参数方程形式为:),(),(),(wuzzwuyywuxx),(),(),(),(wuzwuywuxwuP 曲线或曲面的某一部分,可以简曲线或曲面的某一部分,可以简单地用单地用a at tb b界定它的范围。界定它的范围。直线段直线段 端点坐标分别是端点坐标分别
4、是 P P1 1 x x1 1,y y1 1,P,P2 2 x x2 2,y y2 2 直线段的参数表达式是:直线段的参数表达式是:P(P(t t)=)=P P1 1+(+(P P2 2-P P1 1)*t t=(1-=(1-t t)P)P1 1+t tP P2 2 0 0t t11;参数表示相应的参数表示相应的x,yx,y坐标分量是:坐标分量是:x x(t t)=)=x x1 1+(+(x x2 2-x x1 1)*t t y y(t t)=)=y y1 1+(+(y y2 2-y y1 1)*t t 0 0t t1 1)()()(1212yyxxtytxtPjiP)()()(1212yyx
5、xt 参数方程具有如下优点参数方程具有如下优点:(1)(1)对参数表示的曲线、曲面可对其参数方程直对参数表示的曲线、曲面可对其参数方程直接进行几何变换(如平移、比例、旋转)。接进行几何变换(如平移、比例、旋转)。(2)(2)便于处理斜率为无限大的问题。便于处理斜率为无限大的问题。(3)(3)有更大的自由度来控制曲线、曲面的形状。有更大的自由度来控制曲线、曲面的形状。具有很强的描述能力和丰富的表达能力。具有很强的描述能力和丰富的表达能力。(4)(4)参数方程中,代数、几何相关和无关的变量参数方程中,代数、几何相关和无关的变量是完全分离的,而且对变量个数不限,从而便于是完全分离的,而且对变量个数不
6、限,从而便于用户把低维空间中的曲线、曲面扩展到高维空间用户把低维空间中的曲线、曲面扩展到高维空间去。去。(5)(5)规格化的参数变量规格化的参数变量t t0,1,0,1,使其相应的使其相应的几何分量是有界的,而不必用另外的参数去定几何分量是有界的,而不必用另外的参数去定义其边界。便于曲线和曲面的分段、分片描述义其边界。便于曲线和曲面的分段、分片描述易于实现光顺连接。易于实现光顺连接。(6)(6)易于用矢量和矩阵表示几何分量,计算处易于用矢量和矩阵表示几何分量,计算处理简便易行。理简便易行。曲线和曲面可以分为两类。一类要求通过曲线和曲面可以分为两类。一类要求通过事先给定的离散的点,称为是事先给定
7、的离散的点,称为是插值的曲线或曲插值的曲线或曲面面。另一类不要求通过事先给定的各离散点,。另一类不要求通过事先给定的各离散点,而只是用给定各离散点形成的控制多边形来控而只是用给定各离散点形成的控制多边形来控制形状,称为是制形状,称为是逼近的曲线或曲面逼近的曲线或曲面。基本概念基本概念 插值插值 要求构造一条曲线顺序通过型值点,称要求构造一条曲线顺序通过型值点,称为对这些型值点进行插值(为对这些型值点进行插值(interpolationinterpolation)。)。逼近逼近 构造一条曲线,使它在某种意义上最佳构造一条曲线,使它在某种意义上最佳逼近这些型值点,称之为对这些型值点进行逼逼近这些型
8、值点,称之为对这些型值点进行逼近(近(approximationapproximation)。)。参数连续性参数连续性 一函数在某一点一函数在某一点x x0 0处具有处具有相等相等的直到的直到k k阶的阶的左右导数,称它在左右导数,称它在x x0 0处是处是k k次连续可微的,或次连续可微的,或称它在称它在x x0 0处是处是k k阶连续的,记作阶连续的,记作C Ck k。几何上。几何上C C0 0、C C1 1、C C2 2依次表示该函数的图形、切线方向、曲依次表示该函数的图形、切线方向、曲率是连续的。率是连续的。几何连续性几何连续性 两曲线段的相应的弧长参数化在公共连接两曲线段的相应的弧长
9、参数化在公共连接点处具有点处具有C Ck k连续性,则称它们在该点处具有连续性,则称它们在该点处具有k k阶几何连续性,记作阶几何连续性,记作G Gk k。零阶几何连续。零阶几何连续G G0 0与零与零阶参数连续阶参数连续C C0 0是一致的。一阶几何连续是一致的。一阶几何连续G G1 1指一指一阶导数在两个相邻曲线段的交点处成比例,即阶导数在两个相邻曲线段的交点处成比例,即方向相同,大小不同。二阶几何连续方向相同,大小不同。二阶几何连续G G2 2指两个指两个曲线段在交点处其一阶和二阶导数均成比例。曲线段在交点处其一阶和二阶导数均成比例。光顺光顺 光顺(光顺(smoothnesssmooth
10、ness)是指曲线的拐点不能)是指曲线的拐点不能太多,要光滑顺畅。对于平面曲线相对光顺的太多,要光滑顺畅。对于平面曲线相对光顺的条件应该是:(条件应该是:(1 1)具有二阶几何连续()具有二阶几何连续(G G2 2););(2 2)不存在多余拐点和奇异点;()不存在多余拐点和奇异点;(3 3)曲率变)曲率变化较小。化较小。第二节第二节 HermiteHermite多项式多项式 已知函数已知函数f f(t t)在在k k+1+1个点个点 t ti i 处的函数值和处的函数值和导数值导数值 f f(j j)(t ti i),i i=0,1,=0,1,k k,j j=0,1,=0,1,m mi i-
11、1 1,要求确定一个,要求确定一个N=N=m m0 0+m m1 1+m mk k-1-1次的次的多项式多项式P(P(t t),满足下面的插值条件:,满足下面的插值条件:)()()()(Pitjfitj 考查考查k=1,m0=m1=2的情形的情形 已知表示一条曲线的某个函数已知表示一条曲线的某个函数f(t)在两点在两点t0,t1的函数值的函数值f(t0),f(t1)和一阶导数值和一阶导数值f(t0),f(t1),求三次多项式,求三次多项式P(t):1t,0tt0at1a2t2a3t3aP(t)1f(t)1P(t )0f(t)0P(t)1f(t)1P(t )0f(t)0P(t1a1t22a21t
12、33a)1f(t1a0t22a20t33a)0(tf0a1t1a21t2a31t3a)1f(t0a0t1a20t2a30t3a)0f(t3)0t1(t20)t1)t0(t2f1)t1(tf(30)t1(tf3)0t1(t31)t0(tf0)t1)t06f(t1)t16f(t21)t0(tf21)t1(t(2f1a3)0t1(t20)t1)t13f(t21)t1(tf21)t0(tf(30)t1f(t1)t1(tf(3)0t1(t31)t0f(t0)t21)t03f(t31)t0(t(f0a3)0t1(t)12f(t)02f(t1)t1(tf1)t0(tf0)t0(tf)1(tf(3a3)0t1
13、(t0)t13f(t)03f(t1)t1(tf1)t0(tf(20)t1(t2f)0(tf(3)0t1(t1)t13f(t1)t03f(t21)t02f(t21)t1(tf2a把把a0,a1,a2和和a3代入则有:代入则有:3)01()0132(2)0()1(3)10()1032(2)1()0()(ttttttttfttttttttftP2)01()0(2)1()0(tttttttf1,02)01()1(2)0()1(ttttttttttf 经整理,所求多项式经整理,所求多项式P 0(t)可可以写出如下:以写出如下:)01()(01)1()01()(00)0()(01)1()(00)0()(0
14、ttthtfttthtftgtftgtftP式中选取两个式中选取两个端点端点及其及其及其及其切切向量向量作为曲线构造条件作为曲线构造条件 混合函数混合函数如下:如下:2010011)(012101010)(00201001121)(01210110021)(00ttttttttthttttttttthtttttttttgtttttttttg 设表示一条曲线的某个函数设表示一条曲线的某个函数f(t)在在四点四点t0,t1,t2,t3的函数值的函数值f(t0),(t1),f(t2),f(t3),根据,根据Lagrange插值法,则三次多插值法,则三次多项式项式P(t)可表示为:可表示为:)(3)3
15、()(2)2()(1)1()(0)0()(0tgtftgtftgtftgtftP选择四个不同的选择四个不同的点点作为构造曲线的条件作为构造曲线的条件 )23)(13)(03()2)(1)(0()(3)32)(12)(02()3)(1)(0()(2)31)(21)(01()3)(2)(0()(1)30)(20)(10()3)(2)(1()(0tttttttttttttgtttttttttttttgtttttttttttttgtttttttttttttg混合函数混合函数如下:如下:0)1(010)1(001)1(010)1(000)0(010)0(000)0(011)0(00ththtgtgtht
16、htgtg011)1(010)1(000)1(010)1(000)0(01011)0(000)0(010)0(00ttththtgtgthttthtgtg经验证可知:经验证可知:为了使为了使P0(t)的定义区间的定义区间t0tt1变变为区间为区间0u1,可以做如下变换,可以做如下变换0t1t0ttu解出解出 ,代入混合函,代入混合函数式中,得:数式中,得:u*)0t1(t0tt)(0123322)23()01(0(01)(01)(00123322)1)(21()01(0(00)(00uquuuuutttgtguquuuuutttgtg)(11232)1()01(0(01)(01)(102232
17、)1()01(0(00)(00uquuuuuttththuquuuuuuttthth 将关于将关于u u的混合函数代入,所求的的混合函数代入,所求的三次多项式成为:三次多项式成为:)(11)01()1()(10)01()0()(01)1()(00)0()01(0(0P)(0P)(uqtttfuqtttfuqtfuqtfutttuuf令令)01)(1()1()01)(0()0()1()1()0()0(tttfftttfftfftff得得)1()0()1()0()(11)(10)(01)(00()(11)1()(10)0()(01)1()(00)0()(0Pffffuququququqfuqfuq
18、fuqfu)1()0()1()0(0001010012331122)123()1()0()1()0()23223233212332(ffffuuuffffuuuuuuuuu 对一般的对一般的Hermite插值问题,一插值问题,一般来说得到的插值多项式次数较高,般来说得到的插值多项式次数较高,应用起来不方便。通常的处理办法是应用起来不方便。通常的处理办法是将前面给出的参数的三次多项式逐段将前面给出的参数的三次多项式逐段光滑地连接,如此来确定一般情况下光滑地连接,如此来确定一般情况下的插值多项式。的插值多项式。将前面将前面t0和和t1视为视为ti和和ti+1,设给定,设给定f(ti),f(ti+1
19、),f(ti),f(ti+1),则在区间,则在区间ti,ti+1的的Hermite三次插值多项式三次插值多项式Pi(t)是:是:)1()(1)1()1()(0)()(1)1()(0)()(Pitittihitfitittihitftigitftigitfti1,1,02111)(1,2111)(0,211121)(1,211121)(0,niititittitititttihititittitititttihititittitititttigititittitititttig 为了完整地写出这个插值多项式,可以为了完整地写出这个插值多项式,可以在区间在区间 t t0 0,t tn n 中引入如
20、下一些基本函数:中引入如下一些基本函数:1,2,1,01),(0,1),(1,1)(0,1,010),(0,0)(0,0niittittigittittigtiantttttttgta其它nttttttttthtanttnttngnttttna1,010),01()(0,0)(1,01),(1,110,0)(0,nttntntnttnhnttttnaniittititittihittititittihtia1),1()(1,110,0)(1,1,2,1,01),1()(0,1),1()(1,1)(1,其它完整的插值多项式可写为完整的插值多项式可写为:nitiaitftiaitft0)(1,)(
21、)(0,)()(P 上式在区间上式在区间t0,tn中有定义,且为分中有定义,且为分段定义。在每个区间段定义。在每个区间 ti,ti+1上,都恰有上,都恰有四项。满足插值条件四项。满足插值条件 nitiaitiait0)(1,P)(0,P()(Pniitfititfit,1,0),()(P),()(P 每段曲线段曲线Pi(t)只在只在ti,ti+1中有中有定义:定义:)1)(1,1 P)(0,P)(1,1P)(0,P)(1,11 P)(1,P)(0,11P)(0,P)(Pitittihitihitigitigitiaitiaitiaitiaiti自变量的线性变换自变量的线性变换 ititittu
22、1 用逆变换用逆变换 代入,将代入,将所得关于所得关于u u的多项式记为的多项式记为 ,得,得 )1(*itituitt)(Pui)23(1)223()2332(1)12332()(uuiuuuiuuiuuiuiPPPPP1 P P1PP0001010012331122)123(iiiiuuu其中其中 =iP)()(Pitfit)1(*)1(1)1(*)(itititfiitititfiPP1Pi)1()1(Pitfit 设在平面上有两点设在平面上有两点P0,Pl,它们的位,它们的位置向量分别为置向量分别为(1,1),(4,2),在,在P0的导数的导数值即在该点的切线向量值即在该点的切线向量P
23、0=(1,1),在,在Pl处处P1=(1,-1)11221164)123(112111410001010012331122)123()(uuuuuuuP12232)(12634)(uuuuyuuuux第三节第三节 CoonsCoons曲面曲面 10,10),(),(),(),(Pwuwuzwuywuxwu)0,0(P00),(P2),(P),(Pwuwuuwuwuwuuuwwuuw0,0),(P2000,0),(P00wuwuwuuwwuuwuuuw表示了曲面片的方程表示了曲面片的方程0w,1w,u0,u1表示四条边界曲线表示四条边界曲线u0u表示在边界线表示在边界线u0上的点沿上的点沿u向的
24、一阶偏导向的一阶偏导数向量,称边界线的数向量,称边界线的切向量切向量u0w表示边界线表示边界线u0上的点沿上的点沿w向的一阶偏导数向的一阶偏导数向量,称边界线的向量,称边界线的跨界切向量跨界切向量。uwuu,uwuw,uwww分别表示曲面片分别表示曲面片uw关于关于u和和w的二阶偏导数向量,于是的二阶偏导数向量,于是u0uu表示边界表示边界线线u0上的上的二阶切向量二阶切向量,u0ww表示边界线表示边界线u0上的二阶上的二阶跨界切向量跨界切向量。uwuw为曲面片为曲面片P在点在点(u,w)处的处的扭扭曲向量曲向量。特别,用。特别,用00,01,10,11分别表示曲面片四个角点时,分别表示曲面片
25、四个角点时,00uw,01uw,10uw,11uw就分别表示在四个就分别表示在四个角点的扭曲向量。角点的扭曲向量。构造具有指定边界曲线的曲面片构造具有指定边界曲线的曲面片 Coons给出的一个解法:给出的一个解法:寻找两个混合函数寻找两个混合函数f0(t)和和f1(t),它们,它们是连续的,并且满足是连续的,并且满足f0(0)=1,f0(1)=0,f1(0)=0,f1(1)=1,且,且f0(t)+f1(t)=1,0t1。利用这样的混合函数,通过四条边界利用这样的混合函数,通过四条边界构造曲面片,并通过叠加修正曲面片,产构造曲面片,并通过叠加修正曲面片,产生满足用户需要的曲面。生满足用户需要的曲
26、面。若给定四条边界曲线若给定四条边界曲线u0,u1,0w,1w,且,且0u1,0w1 在在u向进行线性插值,得到直纹面为向进行线性插值,得到直纹面为 1u1,0(u)1f(u)0其中f1w(u)1f0w(u)0fw)(u,1P 在在w向进行线性插值,得到向进行线性插值,得到直纹面为:直纹面为:10,1)(1)(01)(10)(0),(2Pwwfwfuwfuwfwu其中 若把这两张直纹面叠加可若把这两张直纹面叠加可得到一张新曲面得到一张新曲面Ps(u,w):10,1)()(10,1)()(1)(0)(1)(0)(),(P),(P),(P1010101021wwfwfuufufuwfuwfwufw
27、ufwuwuwus其中其中 Ps(u,w)上的任意一点,其位移矢量包含上的任意一点,其位移矢量包含两个部分,一部分是由于两个部分,一部分是由于线性插值线性插值而产生的而产生的位移,另一部分是由于位移,另一部分是由于边界曲线边界曲线而产生的位而产生的位移移 。10,1)(1)(010,1)(1)(011)(1)(101)(0)(110)(1)(000)(0)(011)(101)(0)(110)(100)(0)(0),(3Pwwfwfuufufufwfufwfufwfufwfufufwfufufwfwu,其中 为消除为消除Ps(u,w)中由于线性插值而产生的中由于线性插值而产生的位移,需要构造一个
28、新的曲面位移,需要构造一个新的曲面P3(u,w)构造曲面构造曲面P3(u,w)后,从后,从Ps(u,w)中去除中去除P3(u,w),即去除线性插值的,即去除线性插值的成分,则得到成分,则得到Coons构造曲面构造曲面 P(u,w)=Ps(u,w)-P3(u,w)=P1(u,w)+P2(u,w)-P3(u,w)可写成如下形式:可写成如下形式:)(1)(0)(1),(0)(1)(01,0)(1)(0 1,0),(3P),(2P),(1P),(PwfwfMufufufufwwwfwfuuwuwuwuwuuw其中矩阵其中矩阵M是:是:11100100M 矩阵中四个元素是四个角点的位置向量,矩阵中四个元
29、素是四个角点的位置向量,可用已知四条边界曲线计算求出。可用已知四条边界曲线计算求出。u0,u1可以是关于可以是关于u的三次多项式,的三次多项式,0w,1w可以是关于可以是关于w的三次多项式,混合函数的三次多项式,混合函数也是不超过三次的关于也是不超过三次的关于u或或w的三次多项式的三次多项式,这时公式关于,这时公式关于u看,或关于看,或关于w看,都是三看,都是三次多项式,是关于次多项式,是关于u或或w的双三次多项式的双三次多项式 不难验证它们符合所提问题不难验证它们符合所提问题的要求,例如我们来验证的要求,例如我们来验证0w是它是它的一条边界线,这只要把的一条边界线,这只要把u=0代代入公式右
30、端,得入公式右端,得 wwfwfwwfwf0)(101)(0000)(101)(000右端 曲面片以指定的曲线为其曲面片以指定的曲线为其边界曲线,且有指定的跨界切边界曲线,且有指定的跨界切向量向量。利用本章第二节定义的四利用本章第二节定义的四个混合函数个混合函数q00(t),q01(t),q10(t),q11(t)。这四个函数均是三次多。这四个函数均是三次多项式项式,连续可微,并且还满足连续可微,并且还满足下面的条件:下面的条件:1)1(0)1(0)1(0)1(0)0(1)0(0)0(0)0(0)1(0)1(1)1(0)1(0)0(0)0(0)0(1)0(1110010011100100111
31、0010011100100qqqqqqqqqqqqqqqq 设已经给定四条边界曲线设已经给定四条边界曲线u0,u1,0w,1w及沿这四条边界曲线的及沿这四条边界曲线的跨界切向量跨界切向量u0w,u1w,0wu,1wu。这时可以计算求得四个角点的这时可以计算求得四个角点的位置向量位置向量00,01,10,11,切向量,切向量00w,01w,10w,11w,00u,01u,10u,11u,以及扭曲向量,以及扭曲向量00uw,01uw,10uw,11uw,可以写出符合要求曲面,可以写出符合要求曲面片的数学表达式如下:片的数学表达式如下:)(11)(10)(01)(00)(11),(10),(01),
32、(00)(11)(10)(01)(001,0,1,0)(11)(10)(01)(001,0,1,0wqwqwqwqMuququququququququwuwwwwqwqwqwqwuwuuuuwuwuwuuuwuwuuwwwwM11101110010001001110111001000100 容易地验证所写出的公式满足要容易地验证所写出的公式满足要求,例如以求,例如以u=0代入该式右端,得:代入该式右端,得:wwwqwwqwwqwqwwqwwqwwqwq00)(1101)(1000)(0101)(00000)(1101)(1000)(0101)(0000右端 曲面片沿边界线取给定的各曲面片沿边界
33、线取给定的各跨界切向量,可先对该式关于某跨界切向量,可先对该式关于某一变量求导,例如对一变量求导,例如对u求导,然求导,然后再代入后再代入u=0,这时有,这时有 uwwqwqwqwqMuwuwwwwqwqwqwquwuwuu0)(11)(10)(01)(00010001001010)(11)(10)(01)(0001000100右端 指定指定四个角点四个角点以及在这些以及在这些点上的点上的切向量和扭曲向量切向量和扭曲向量后,后,求解曲面的表达式求解曲面的表达式。已知角点位置向量已知角点位置向量00,10以及在这两点关于以及在这两点关于u的切向量的切向量00u和和10u,可以用,可以用Hermi
34、te插值插值公式来指定一条公式来指定一条u边界线:边界线:)(1110)(1000)(0110)(0000uquuquuququ0u0)(1111)(1001)(0111)(00011uquuquuququ)(1111)(1001)(0111)(00011)(1110)(1000)(0110)(00000uquwuquwuqwuqwwuuquwuquwuqwuqwwuMuquququqwuwuuu)(11)(10)(01)(001010)(1111)(1010)(0111)(00101)(1101)(1000)(0101)(00000)(1111)(1010)(0111)(00101)(110
35、1)(1000)(0101)(00000wquwwquwwquwquuwwquwwquwwquwquuwwqwwqwwqwqwwqwwqwwqwqw)(11)(10)(01)(001010wqwqwqwqMuwuwww将上两式代入前式,就可以得到:将上两式代入前式,就可以得到:T T11w w2 2w w3 3wwT TH HM MH H11u u2 2u u3 3uu1 1w w2 2w w3 3w w0 00 01 11 10 01 12 21 10 00 03 32 21 10 03 32 2uwuw1111uwuw1010u u1111u u1010uwuw0101uwuw0000u
36、u0101u u0000w w1111w w101011111010w w0101w w0000010100000 00 00 01 10 01 10 00 01 12 23 33 31 11 12 22 211u u2 2u u3 3uu(w)(w)1111q q(w)(w)1010q q(w)(w)0101q q(w)(w)0000q qM M(u)(u)1111q q(u)(u)1010q q(u)(u)0101q q(u)(u)0000qquwuw 给出四个角点以及在该角点上的切向量和扭给出四个角点以及在该角点上的切向量和扭曲向量来构造曲向量来构造Coons曲面表达式。设在平面上有曲面
37、表达式。设在平面上有四点四点P0,Pl,P2,P3,它们的位置向量分别为,它们的位置向量分别为(0,0,0),(0,0.75,0),(0.75,0,0),(0.75,0.75,0)。该四点的切向量、跨界切向量和扭曲向量,。该四点的切向量、跨界切向量和扭曲向量,定义在关于角点的信息矩阵定义在关于角点的信息矩阵M中中 111111111111110043xM110011001100110043111111111110111043zMyM0,10,1w w0,1,0,1,u u1 1w w2 2w w3 3w w0 00.750.752.252.251.51.50 00.750.750.750.75
38、0 00 00.750.750.750.750 00 00 00 00 011u u2 2u u3 3uuw)w)z(u,z(u,1 1w w2 2w w3 3w w0 00.750.750 00 00.750.750.750.750.750.750 00.750.750.750.750.750.750 00 00 00 00 011u u2 2u u3 3uuw)w)y(u,y(u,1 1w w2 2w w3 3w w0 00.750.750.750.750 00.750.750.750.750.750.750 00 00.750.753.753.754.54.50 00 03 33 311
39、u u2 2u u3 3uuw)w)x(u,x(u,第四节第四节 Bezier曲线和曲面曲线和曲面 Bezier曲线曲线 给出型值点给出型值点P0,P1,Pn,它们,它们所确定的所确定的n次次Bezier曲线是:曲线是:100P)(,)(PtniitniBt涉及到的涉及到的0!及及00,按约定均为,按约定均为1。在在n=1时时,公式成为:公式成为:niintitininintitinCtniB,1,0)1()!(!)1()(,101*0*)1()(ttttPPP在在n=2时,公式成为:时,公式成为:10,2P1P0P001022121)12(2P21P)1(20P2)1()(Ptttttttt
40、 在在n=3n=3时,公式成为:时,公式成为:1032100001003303631331)123(332)1(2312)1(303)1()(tttttttttttPPPPPPPPPBezier曲线的一些重要性质曲线的一些重要性质 P(0)=P0,P(1)=P1,曲线通过所给出型值点列的起点和终点。1 1n n0 0i i)i iP P1 1i i(P(P1 1i in nt)t)(1(1i it t1)!1)!i i(n(ni!i!n!n!n nP P1 1n nt t1)!1)!(n(nn!n!1 1n nP P1 1n nt t1)!1)!(n(nn!n!1 1n nt)Pt)P(1(1
41、2 2n nt t2)!2)!(n(nn!n!1 1P P2 2n nt)t)t(1t(12)!2)!(n(nn!n!1 1P P1 1n nt)t)(1(11)!1)!(n(nn!n!0 0P P1 1n nt)t)(1(11)!1)!(n(nn!n!i i)P)P1 1i in nt)t)(1(1i it ti)i)(n(ni in nt)t)(1(11 1i it t(i(in n0 0i ii)!i)!(n(ni!i!n!n!(t)(t)PP)1PP()1(P),0P1P()0(Pnnnn BezierBezier曲线的对称性曲线的对称性)1(,)1()!(!)(,tninBintit
42、inintniBn nt t)P P(1 1n n0 0,B Bi in nt t)P P(1 1n ni i,B Bi it t)P P(1 1n ni i,n nB B0 0t t)P P(1 1n nn n,B Bn n(t t)P Pn nn n,B Bi in n(t t)P Pn ni i,n nB Bi i(t t)P Pn ni i,B B0 0(t t)P Pn n0 0,B BP P(t t)曲线的凸包性曲线的凸包性 对给定的型值点对给定的型值点P0,P1,Pn点集点集 1n0ii1,i0n0iiPiM1)t,0i(0n0i1,(t)ni,B1,0nt)t)(1(t)ni,
43、B分段的三次分段的三次Bezier曲线光滑连接曲线光滑连接 设给出两个设给出两个Bezier多边形多边形P0P1P2P3和和Q0QlQ2Q3,显然,使所决定的两条,显然,使所决定的两条Bezier曲曲线在连接点处连续的条件是线在连接点处连续的条件是P3=Q0。Bezier曲线在连接点处曲线在连接点处G1连续,即一阶导数连续,即一阶导数几何几何连续,就要求连续,就要求Q0=aP3,这里,这里a应该是一应该是一个正数。由前面的公式,知个正数。由前面的公式,知Q0=3(Q1Q0),P3=3(P3P2),因此可知使在连接点处,因此可知使在连接点处G1连连续的条件是:续的条件是:)2P3(P*a0Q1Q
44、由此得由此得 1a2aP1Q3P0Q 连接点处达到连接点处达到C2连续,即二阶导数连续,即二阶导数参数参数连续连续的条件的条件 对前面的公式求两次导数,可得,对前面的公式求两次导数,可得,36tP26)P18t(112)P(18t06)P6t(3P2P1P0P036313312)(6t(t)P 于是知,于是知,要求,要求,即即 ,注意到Q0=P3,由此得:26Q112Q06Q(0)Q,16P212P36P(1)P (0 0)Q Q(1 1)P P 1P22P3P2Q12Q0Q)21(*212PQPQ 绘制绘制Bezier曲线时,可以利用其定义式,曲线时,可以利用其定义式,对参数对参数t选取足够
45、多的值,计算曲线上的选取足够多的值,计算曲线上的一些点,然后用折线连接来近似画出实一些点,然后用折线连接来近似画出实际的曲线。随着选取点增多,折线和曲际的曲线。随着选取点增多,折线和曲线可以任意接近。线可以任意接近。假设给定的四个型值点是假设给定的四个型值点是P0=(1,1),Pl=(2,3),P2=(4,3),P3=(3,1),则计,则计算结果见表算结果见表 t(1-t)33t(1-t)23t2(1-t)t3P(t)01000(1,1)0.150.6140.3250.05740.0034(1.5058,1.765)0.350.2750.4440.2390.043(2.248,2.376)0.
46、50.1250.3750.3750.125(2.75,2.5)0.650.0430.2390.4440.275(3.122,2.36)0.850.00340.05740.3250.614(3.248,1.75)10001(3,1)绘制绘制Bezier曲线的方法曲线的方法 几何作图法几何作图法 分裂法分裂法记点记点Pk,Pk+1,Pk+l可以生成的可以生成的Bezier曲线为曲线为Pk,l(t),0t1,则成立,则成立下面的递推关系:下面的递推关系:(t)n1,Pt(t)1n0,Pt)(1(t)n0,P证明上式,要用到组合等式:证明上式,要用到组合等式:1i1nCi1nCinC左端左端n n0
47、0i ii iP Pi in nt)t)(1(1i it ti in nC Cn nP Pn nt ti iP Pi in nt)t)(1(1i it t1 1n n1 1i i)1 1i i1 1n nC Ci i1 1n n(C(C0 0P Pn nt)t)(1(1n nP Pn nt ti iP Pi in nt)t)(1(1i it t1 1n n1 1i i1 1i i1 1n nC Ci iP Pi in nt)t)(1(1i it t1 1n n1 1i ii i1 1n nC C0 0P Pn nt)t)(1(1 n nP P1 1n nt ti iP Pi in nt)t)(
48、1(11 1i it t1 1n n1 1i i1 1i i1 1n nC Ctt i iP P1 1i in nt)t)(1(1i it t1 1n n1 1i ii i1 1n nC C0 0P P1 1n nt)t)t)(1t)(1(1(11 1i iP P1 1i in nt)t)(1(1i it t1 1n n0 0i i1 1n n0 0i ii i1 1n nC Ct ti iP P1 1i in nt)t)(1(1i it ti i1 1n nC Ct)t)(1(1右端右端上式改写为:上式改写为:(t)1n0,P(t)n1,t(P(t)1n0,P(t)n0,Pvoid bez_
49、to_points(int n,int npoints,double P,double points)/P为控制点坐标为控制点坐标 points为采用几为采用几何作图算法生成的何作图算法生成的Bezier曲线上的离散点序列曲线上的离散点序列离散点序列离散点序列points的个数为的个数为npoints 控制点控制点P的个数为的个数为n+1 double t,delt;delt=1.0/(double)npoints;/将参数将参数t npoints等分等分t=0.0;for(int i=0;i=npoints;i+)pointsi=decas(n,P,t);/分别求出分别求出npoints+1
50、个离散点个离散点points的坐标的坐标t+=delt;double decas(int n,double P,double t)int m,i;double*R,*Q,P0;R=new doublen+1;Q=new doublen+1;for(i=0;i0;m-)/n次次Bezier曲线在点曲线在点t的值,可由两条的值,可由两条n-1次次Bezier曲线曲线/在点在点t的值通过线性组合而求得。的值通过线性组合而求得。for(i=0;im;i+)Qi=R i+t*(R i+1-R i);for(i=0;i=m-1;i+)Ri=Q i;P0=R0;delete R;delete Q;retur