您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > (计算机图形学)自由曲线曲面
第七章7.1基本概念7.2Bezier曲线7.3Bezier曲面7.4B样条曲线7.5B样条曲面7.6本章总结本章内容曲线曲面概述图形学中一个很复杂的又非常重要的研究领域。曲线曲面才是造型的真正统治者,它占据了我们生活和幻想中的造型的绝大部分。但曲线曲面又是如此地难以理解,让人们在一段很长很长的时间内无法征服它。自由曲线和曲面规则的曲线和曲面,比如:圆和球,可以用固定的函数表达式来构造,但是他的造型能力有限,我们这儿不讨论。自由曲线和曲面是指那些形状比较复杂、不能用初等解析函数直接表示出来的曲线和曲面。•它的应用极为广泛,在动画领域上举足轻重,在造型工业设计上更是独占鳌头。汽车车身、飞机机翼和轮船船体等的曲线和曲面均属于这一类。7.1基本概念7.1.1曲线与曲面的表示形式已知直线段的起点坐标P0(x0,y0)和终点坐标P1(x1,y1),直线段的显式方程表示为001010xxyyxxyy隐函数方程表示为0)(),(001010xxxxyyyyyxf参数方程表示为tyyyytxxxx)()(010010,t∈〔0,1〕工业上常使用优点:易推导至高维;改变t值得到一条轨迹,直观;不同参数方程可得到同一曲线7.1.2曲线构造方法插值法给定一组有序的数据点Pi,i=0,1,…,n,构造一条曲线顺序通过这些数据点,称为对这些数据点进行插值,所构造的曲线称为插值曲线。逼近法构造一条曲线使之在某种意义下最接近给定的数据点(但未必通过这些点),称为对这些数据点进行逼近,所构造的曲线称为逼近曲线。插值和逼近统称为拟合。在前面的插值法中,如果给定的点(叫做型值点)太多,很难构造插值函数,因此可以适当的放弃一些型值点。型值点:是用于确定曲线和曲面的位置与形状,且相应曲线或曲面一定经过的点。控制点:是用于确定曲线和曲面的位置与形状,但相应曲线或曲面不一定经过。插值点:是在型值点或控制点值之间插入的一系列点。曲线构造方法判断哪些是插值、哪些是逼近插值法线性插值:假设给定函数f(x)在两个不同点x1和x2的值,用线形函数近似代替f(x),称为的线性插值函数。插值法抛物线插值(二次插值):已知在三个互异点x1,x2,x3的函数值为y1,y2,y3,要求构造函数¢(x)=ax2+bx+c,使得¢(x)在xi处与f(x)在xi处的值相等。光顺:曲线拐点不能太多。对平面曲线来讲,相对光顺的条件是:具有二阶几何连续性不存在多余的拐点和奇异点曲率变化较小连续性条件在拟合过程中,不同控制点和型值点控制的曲线段不一样,我们可能用多组曲线段去组合一条最终的拟合曲线,多条曲线首尾相连形成一条曲线,为了让连接处具有合乎要求的连续性,因此需要定义连续性条件Examples:Thesetwocurvesdonotfittogetheratall.Thesetwocurvesfittogether,butnotsmoothly.Thesetwocurvesfittogethersmoothly.连续性条件参数连续性,用C阶数表示C0连续(0阶参数连续)——指曲线相连,前一段曲线的终点t=1与后一段曲线的起点t=0相同,即相邻两段曲线结合点处有相同坐标。C1连续(一阶参数连续)——代表两个相邻曲线段的方程在相交点处有相同的一阶导数(切线)。(一阶导数反映了曲线对参数t的变化速度)C2连续(二阶参数连续)——两个曲线段在交点处有相同的一阶和二阶导数。(二阶导数反映了曲线对参数t的变化的加速度)连续性条件几何连续性,用G阶数表示,其只要求参数成比例。G0连续(0阶几何连续)——与C0连续相同。G1连续(一阶几何连续)——指一阶导数在两个相邻段的交点处成比例但不一定相等。G2连续(二阶几何连续)——指两个曲线段在相交处其一阶和二阶导数均成比例。G2连续性下,两个曲线段在交点处的曲率相等。在实际的曲线造型应用中,我们要适当地选择曲线段间的连续性,使造型物体既能保证其光滑性的要求,也能保证其美观性的要求,一般只使用C1,C2和G1,G2连续。7.2Bezier曲线BezierBezier曲线由法国雪铁龙(Citroen)汽车公司的deCasteljau于1959年发明,后来又由法国雷诺(Renault)汽车公司的工程师Bezier于1962年独立发明。DeCasteljau几种典型的Bezier曲线In1959,whileworkingatCitroen,PaulDeCasteljaudevelopedanalgorithmforevaluatingcalculationsonacertainfamilyofcurves,whichwouldlaterbeformalizedandpopularizedbyengineerPierreBezier,andthecurvescalledDeCasteljaucurveorBeziercurve.给定n+1个控制点Pi(i=0,1,2……n),称为n次Bezier曲线。t∈〔0,1〕式中,Pi(i=0,1,2……n)是控制多边形的n+1个控制点,控制多边形是连接n条边构成的多边形。Bi,n(t)是Bernstein基函数,其表达式为:7.2.1Bezier曲线的定义)()(,0tBPtpniniiiniinininittCttinintB)1()1()!(!!)(,在实际应用中,最常用的是三次Bezier曲线,其次是二次Bezier曲线,高次Bezier曲线一般很少使用。voidCTestView::DrawBezier()//绘制Bezier曲线{CDC*pDC=GetDC();CPenNewPen,*pOldPen;NewPen.CreatePen(PS_SOLID,1,RGB(0,0,255));//曲线颜色pOldPen=pDC-SelectObject(&NewPen);pDC-MoveTo(P[0]);for(doublet=0.0;t=1.0;t+=0.01){doublex=0,y=0;for(inti=0;i=n;i++){x+=P[i].x*C(n,i)*pow(t,i)*pow(1-t,n-i);y+=P[i].y*C(n,i)*pow(t,i)*pow(1-t,n-i);}pDC-LineTo(Round(x),Round(y));}pDC-SelectObject(pOldPen);NewPen.DeleteObject();ReleaseDC(pDC);}doubleCTestView::C(constint&n,constint&i)//Bernstein第一项{returndouble(Fac(n))/(Fac(i)*Fac(n-i));}longCTestView::Fac(intn)//阶乘函数{intf;if(0==n||1==n)f=1;elsef=n*Fac(n-1);returnf;}Power幂,Factorial,阶乘当n=1时,Bezier曲线的控制多边形有二个控制点P0和P1,Bezier曲线是一次多项式。一次Bezier曲线是一段直线。)()(P)()(1,111,001,10tBPtBtBPtpiii1.一次Bezier曲线10Pt)(1Pt2.二次Bezier曲线当n=2时,Bezier曲线的控制多边形有三个控制点P0、P1和P2,Bezier曲线是二次多项式。二次Bezier曲线是一段抛物线。BPP)()(2,222,112,002,20BPBtBPtpiiiPt)1(2Pt)(122102Ptt当n=3时,Bezier曲线的控制多边形有四个控制点P0、P1、P2和P3,Bezier曲线是三次多项式。三次Bezier曲线是段自由曲线。PtPt)-(1t3)1(3Pt)(133221203PttPtP)3tt3()363(1)P3t-3tt(33223123023Pttt3.三次Bezier曲线,,,。BPBPP)()(3,332,323,113,003,30BPBtBPtpiii3.三次Bezier曲线,,,。写成矩阵形式为t∈〔0,1〕32102300010033036313311PPPPttt32103,33,23,13,0)(PPPPBBBBtp三次Bezier曲线的Bernstein基函数:3233,0)1(133)(tttttB2233,1)1(3363)(ttttttB)1(333)(2233,2tttttB33,3)(ttB4个基函数B0,3(t)B3,3(t)B1,3(t)B2,3(t)Ot在区间〔0,1〕范围内,每个基函数均不为零,说明不能使用控制多边形对曲线的形状进行局部调整,如果要改变某一控制点位置,整条曲线都将受到影响。7.2.2Bernstein基函数及曲线的性质1.非负性:t∈〔0,1〕(i=0,1,2……n)iniinininittCttinintB)1()1()!(!!)(,0)(,tBni2.权性:1)1()1()(00,nniiniinninittttCtB,t∈〔0,1〕•凸包性0)(,tBni1)(0,ninitB由Bernstein基函数的非负性和权性可知,在闭区间〔0,1〕内,,而且说明Bezier曲线位于控制多边形构成的凸包之内,而且永远不会超出凸包的范围。P0P0P1P22.端点性质0,00,1)0(,iiBnininiBni,0,1)1(,,这里用到:00=1,0!=1曲线端点必经过控制多边形的端点当t=0时,p(0)=P0;当t=1时,p(1)=Pn。4.对称性(即从左到右,从右到左是对称的))(,))1(1()1()1(innininnninttCtBinninCC因为:)()1()1(,,tBttCtBniiniinnin•对称性iniPP*由控制点,(i=0,1,2……n),构造出的新Bezier曲线与原Bezier曲线形状相同,但走向相反。ninininniniinniniitBPtBPtBPtp0,0,,0**)1()()()()1()1(,0tptBPninii这个性质说明Bezier曲线在控制多边形的起点和终点具有相同的性质5.导数)()()(1,1,1',tBtBntBninini,(i=0,1,2……n)•一阶导数))()(()(1,1,110'tBtBPntpnininii)()()()((1,111,011,001,10tBPtBPtBPtBPnnnnn))()()()(1,1,11,111,21tBPtBPtBPtBPnnnnnnnnnnnn)()(11,11niniiitBPPn)()0(01'PPnp)()1(1'nnPPnp在起始点t﹦0,B0,n-1(0)﹦1,其余项均为0,故有:在终止点t﹦1,Bn-1,n-1(1)﹦1,其余项均为0,故有:5.导数)()()(1,1,1',tBtBntBninini,(i=0,1,2……n)•二阶导数2121202(t))BPP(P)n(n(t)pi,niinii''当t=0时,))()((1)2(100112012PPPP)n(nPPP)n(n)(p''当t=1时,))()((1)2(1121121nnnn
本文标题:(计算机图形学)自由曲线曲面
链接地址:https://www.777doc.com/doc-4327301 .html