曲线分类规则曲线:可用初等解析函数来表示如圆、椭圆、双曲线、圆球、圆柱、圆锥等自由曲线:以复杂方式自由变化,无法用初等解析函数来描述的光滑连续性曲线如汽车车身、船体外壳和飞机机翼等随机曲线:处处连续,处处不光滑且处处不可导的非规则曲线如地图边界、海岸线、水波以及超声等图7-1汽车的曲面7.1基本概念7.1.1样条曲线曲面7.1.2曲线曲面的表示形式7.1.3拟合和逼近7.1.4连续性条件7.1.1样条曲线曲面在汽车制造厂里,传统上采用样条绘制曲线的形状。绘图员弯曲样条(如弹性细木条)通过各型值点,其它地方自然过渡,然后沿样条画下曲线,即得到样条曲线(SplineCurve)。在计算机图形学中,样条曲线是指由多项式曲线段连接而成的曲线,在每段的边界处满足特定的连续性条件,而样条曲面则可用两组正交样条曲线来描述。7.1.2曲线曲面的表示形式曲线曲面的可以采用显式方程、隐函数方程和参数方程表示:首先看一下直线的表示形式:已知直线的起点坐标P1(x1,y1)和终点坐标P2(x2,y2),直线的显式方程表示为:)(112121xxxxyyyy直线的隐函数方程表示为:直线的参数方程表示为:0)()(112121xxxxyyyyxftyyyytxxxx)()(121121由于用参数方程表示的曲线曲面可以直接进行几何变换,而且易于表示成矢量和矩阵,所以在计算机图形学中一般使用参数方程来描述曲线曲面。下面以一条三次曲线为例,给出参数方程的矢量和矩阵表示:参数方程表示:zzzzyyyyxxxxdtctbtatzdtctbtatydtctbtatx232323)()()(,t∈〔0,1〕;矢量表示:t∈〔0,1〕;矩阵表示:t∈〔0,1〕;dctbtattp23)(dcbattttp1)(237.1.3拟合和逼近曲线曲面的拟合:当用一组型值点(插值点)来指定曲线曲面的形状时,形状完全通过给定的型值点序列确定,称为曲线曲面的拟合,如图7-2所示。曲线曲面的逼近:当用一组控制点来指定曲线曲面的形状时,求出的形状不必通过控制点,称为曲线曲面的逼近,如图所示。图7-2拟合曲线图7-3逼近曲线7.1.4连续性条件通常单一的曲线段或曲面片难以表达复杂的形状,必须将一些曲线段连接成组合曲线,或将一些曲面片连接成组合曲面,才能描述复杂的形状。为了保证在连接点处平滑过渡,需要满足连续性条件。连续性条件有两种:参数连续性和几何连续性。参数连续性零阶参数连续性,记作C0,指相邻两个曲线段在交点处具有相同的坐标。如图7-4所示。图7-4零阶连续性一阶参数连续性,记作C1,指相邻两个曲线段在交点处具有相同的一阶导数。如图7-5所示。图7-5一阶连续性二阶参数连续性,记作C2,指相邻两个曲线段在交点处具有相同的一阶和二阶导数。如图7-6所示。图7-6二阶连续性7.4Bezier曲线法国雷诺汽车公司的工程师Bezier和法国雪铁龙汽车公司的deCasteljau分别提出了一种新的参数曲线表示方法,称为Bezier曲线。Bezier的想法从一开始就面向几何而不是面向代数。Bezier曲线由控制多边形惟一定义,Bezier曲线只有第一个顶点和最后一个顶点落在控制多边形上,且多边形的第一条和最后一条边表示了曲线在起点和终点的切矢量方向,其它顶点则用于定义曲线的导数、阶次和形状,曲线的形状趋近于控制多边形的形状,改变控制多边形的顶点位置就会改变曲线的形状。绘制Bezier曲线的直观交互性使得对设计对象的控制达到了直接的几何化程度,使用起来非常方便。几种典型的三次Bezier曲线如图7-7所示。几种典型的三次Bezier曲线7.4.1Bezier曲线的定义7.4.2Bezier曲线的性质7.4.3Bezier曲线的可分割性给定n+1个控制点Pi(i=0,1,2……n),称为n次Bezier曲线。t∈〔0,1〕式中,Pi(i=0,1,2……n)是控制多边形的n+1个控制点,控制多边形是连接n条边构成的多边形。是Bernstein基函数,其表达式为:7.4.1Bezier曲线的定义)()(,0tBPtpniniiininittinintB)1()!(!!)(,1.一次Bezier曲线当n=1时,Bezier曲线的控制多边形有二个控制点P0和P1,Bezier曲线是一次多项式。可以看出,一次Bezier曲线是一段直线。101,10Pt)(1)()(PttBPtpiii2.二次Bezier曲线当n=2时,Bezier曲线的控制多边形有三个控制点P0、P1和P2,Bezier曲线是二次多项式。可以证明,二次Bezier曲线是一段抛物线。Pt)1(2Pt)(1)()(221022,20PtttBPtpiiiPt)22(P1)2t-(t221202Ptt3.三次Bezier曲线当n=3时,Bezier曲线的控制多边形有四个控制点P0、P1、P2和P3,Bezier曲线是三次多项式。可以证明,三次Bezier曲线是自由曲线。PtPt)-(1t3)1(3Pt)(1)()(332212033,30PtttBPtpiiiPtP)3tt3()363(1)P3t-3tt(33223123023Pttt注意:对于Bezier曲线,在区间〔0,1〕范围内,每个基函数均不为零,说明不能使用控制多边形对曲线的形状进行局部调整,如果要改变某一控制点位置,整个曲线都将受到影响。7.4.2Bezier曲线的性质1.端点性质在闭区间〔0,1〕内,将t=0和t=1代入式(7-12),得到p(0)=P0和p(1)=Pn。说明Bezier曲线的起点和终点分别位于顶点P0和Pn上。2.一阶导数将式(7-12)求导,有在闭区间〔0,1〕内,将t=0和t=1代入上式,得到这说明Bezier曲线的起点和终点的切线方向位于控制多边形的起始边和终止边的切线方向上。])1()()1([)(110'iniiniinniittinttiCPtp)()0(01'PPnp)()1(1'nnPPnp3.凸包性质由公式(7-13)可以看出,在闭区间〔0,1〕内,,而且。说明Bezier曲线位于控制多边形构成的凸包之内。0)1()(,iniinnittCtB1)(0,ninitB(4)几何不变性。这是指某些几何特性不随坐标变换而变化的特性。Bezier曲线位置与形状与其特征多边形顶点的位置有关,它不依赖坐标系的选择。),,1,0(niPiBezier曲线的性质7.4.3Bezier曲线的可分割性Bezier曲线的可分割性可用德卡斯特里奥(DeCasteliau)算法表达如下。给定空间n+1个点Pi(i=0,1,2n)及参数t,有)()()1()(111tPttPttPririri]1,0[;,1,0;,2,1trninr例如,当n=3时,有三次Bezier曲线递推如下:0,31,0,22,1,0,1iririr)()()1()()()()1()()()()1()(030212020111010010tPttPttPtPttPttPtPttPttP其中:规定:)()()1()()()()1()(121121111020tPttPttPtPttPttP)()()1()(212030tPttPttPiiPtP)(0根据该式可以绘制Bezier曲线,取t=0,t=1/3,t=2/3,t=1,点的运动轨迹形成Bezier曲线。图7-8绘制的是t=1/3的点。图7-9绘制的是t=2/3的点。几何设计中,一条Bezier曲线往往难以描述复杂的曲线形状。这是由于增加特征多边形的顶点数,会引起Bezier曲线次数的提高,而高次多项式又会带来计算上的困难,实际使用中,一般不超过10次。所以有时采用分段设计,然后将各段曲线相互连接起来,并在接合处保持一定的连续条件。下面讨论两段Bezier曲线达到不同阶几何连续的条件。Bezier曲线的拼接给定两条Bezier曲线P(t)和Q(t),相应控制点为Pi(i=0,1,...,n)和Qj(j=0,1,...,m),且令,如图所示,我们现在把两条曲线连接起来。图Bezier曲线的拼接11,jjjiiiQQbPPab1Pn-2Pn-1P(t)an-1anPnQ0Q1b2Q2Q(t)Bezier曲线的拼接(1)要使它们达到G0连续的充要条件是:Pn=Q0;(2)要使它们达到G1连续的充要条件是:Pn-1,Pn=Q0,Q1三点共线,即:(3)要使它们达到G2连续的充要条件是:在G1连续的条件下,并满足方程。)0(1nab)1()1()0('2PPQBezier曲线的拼接Bezier曲线的绘制绘制Bezier曲线时,可以利用其定义式,对参数t选取足够多的值,计算曲线上的一些点,然后用折线连接来近似画出实际的曲线。随着选取点增多,折线和曲线可以任意接近。假设给定的四个型值点是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.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)(1)特征点个数与曲线的次数有关,若给定任意n+1个控制点,可构造出一条n次的Bezier曲线.当n值较大时,计算相当复杂。在实际应用时,一般用分段三次Bezier曲线来实现:将多段三次Bezier曲线依次拼接起来,并保证连接处具有C1和C2连续性。(2)Bezier曲线是一个整体的逼近方案(牵一发动全身),Bezier曲线不能局部修改。Bezier曲线的主要缺点习题请利用下面给出的控制点的坐标,做三次Brezier曲线:p0=(1,0);p1=(5,5);p2=(15,7);p3=(10,2)参数t的取值间隔为0.2。n=3时,B0(t)=(1-t)³,B1(t)=3(1-t)²t,B2(t)=3(1-t)t²,B3(t)=t³对于参数t的不同取值,坐标P(t)可以用下式求得:P(t)=B0(t)p0+B1(t)p1+B2(t)p2+B3(t)p300.20.40.60.81B010.510.220.060.010B100.380.430.230.10B200.10.230.430.380B300.010.060.220.511tBi解:P(0)=1×(1,0)+0×(5,5)+0×(15,7)+0×(10,2)=(1,0)P(0.2)=0.51×(1,0)+0.38×(5,5)+0.10×(15,7)+0.01×(10,2)=(4.01,2.62)P(0.4)=0.22×(1,0)+0.43×(5,5)+0.23×(15,7)+0.06×(10,2)=(6.42,3.88)P(0.6)=0.06×(1,0)+0.23×(5,5)+0.43×(15,7)+0.22×(10,2)=(9.86,4.60)P(0.8)=0.01×(1,0)+0.10×(5,5)+0.38×(15,7)+0.51×(10,2)=(11.31,4.18)P(1)=0×(1,0)+0×(5,5)+0×(15,7)+1×(1