第5章 曲线与曲面2.ppt
6.2 常用的参数曲线常用的参数曲线1 Bzier于1962年将函数逼近的思想同曲线的几何表示结合起来,构造了Bzier参数曲线,使得设计师在计算机上作图就像常规的手工作图一样方便、灵活(见演示)说明:双击鼠标左键确定控制点,要取消点打开“曲线”菜单6.2.1 6.2.1 BzierBzier曲线曲线26.2.1 6.2.1 BzierBzier曲线曲线 BzierBzier曲线是一段曲线是一段n n(n n1)次多项式曲线次多项式曲线,它能满足几何造型对曲线曲面的要求。以下是BzierBzier曲线的示例曲线的示例BezierBezier曲线的例子曲线的例子3p Bzier曲线的定义及其性质1.B zier曲线的定义曲线的定义 在空间给定n+1个点P P0 0,P P1 1,PnPn,称下列参数多项式曲线为n次Bzier曲线:其中 是Bernstein(伯恩思坦)伯恩思坦)基函数,即:,0t16.2.1 6.2.1 BzierBzier曲线曲线i=1,2,n控制多边形:控制多边形:折线P0P1Pn 控制顶点:控制顶点:各点P0,P1,Pn 4P(t)n次Bzier曲线及控制多边形P1PnPn-10P控制定点控制多边形控制多边形是对Bzier曲线P(t)的大致勾画,而Bzier曲线P(t)是对控制多边形(或控制点)的逼近。6.2.1 6.2.1 BzierBzier曲线曲线p Bzier曲线的定义及其性质1.B zier曲线的定义曲线的定义5示例:示例:1、2和和3次次BzierBzier曲线曲线1次次BzierBzier曲线曲线2次次BzierBzier曲线曲线3322)1(3PtPtt+-+203)1(3)1()(tPtPttP-+-=3次次BzierBzier曲线曲线16.2.1 6.2.1 BzierBzier曲线曲线p Bzier曲线的定义及其性质1.B zier曲线的定义曲线的定义6权性权性 四个四个3 3次次BernsteinBernstein基函数基函数J0,3(t)J1,3(t)J2,3(t)J3,3(t)1001t非负性非负性 0,仅当t=0,1时为06.2.1 6.2.1 BzierBzier曲线曲线p Bzier曲线的定义及其性质2.Bernstein基函数的性质基函数的性质对称性对称性i=1,2,n7最大值最大值在参数 时,达到最大值 递推公式递推公式 i=0,1,2,ni=0,1,2,n导函数导函数记 ,则 的导函数为:i=0,1,2,n6.2.1 6.2.1 BzierBzier曲线曲线p Bzier曲线的定义及其性质2.Bernstein基函数的性质基函数的性质8p B B zierzier曲线的性质曲线的性质端点的位置端点的位置Bzier曲线开始于点 ,结束于 点端点的切线端点的切线Bzier曲线 在起点 处与边 相切,在终点 处与边 相切,即6.2.1 6.2.1 BzierBzier曲线曲线9端点的二阶导矢端点的二阶导矢p B B zierzier曲线的性质曲线的性质6.2.1 6.2.1 BzierBzier曲线曲线Bezier曲线在端点处的r阶导数,只与(r+1)个相邻点有关,与更远的点无关。由得:10p B B zierzier曲线的性质曲线的性质仿射不变性仿射不变性Bzier曲线的形状和位置仅与它的控制顶点的位置有关,而与仿射坐标系的选择无关。0P1P2P3Pyx6.2.1 6.2.1 BzierBzier曲线曲线11凸包性凸包性Bzier曲线P(tP(t)位于其控制顶点的凸包之内P0P1PnPn-1BzierBzier曲线的凸包性曲线的凸包性凸集P(t)点集 Pi|i=1,2,n 的凸包是指包含这些点的最小凸集p B B zierzier曲线的性质曲线的性质6.2.1 6.2.1 BzierBzier曲线曲线12交互能力交互能力通过改变控制多边形的形状来改变 的形状 如图所示,将控制顶点 移到处,的形状发生了改变P0P1P2P4P3Bzier曲线随控制多边形而变p B B zierzier曲线的性质曲线的性质6.2.1 6.2.1 BzierBzier曲线曲线移动移动P(t)的第的第j个控制顶点个控制顶点Pj,将对将对P(t)上参数为上参数为t=t=j/nj/n的点的点P(j/nP(j/n)的影响最大,对对远的影响最大,对对远离离t=j/n的点的影响越来越小,的点的影响越来越小,这种性质也称为局部性。这种性质也称为局部性。13变差缩减性变差缩减性平面内任一直线与 的交点的个数不多于该直线与控制多边形P0P1Pn 的交点的个数Bzier曲线比控制多边形更光顺P0P1PnPn-1P(t)Bzier曲线的变差缩减性p B B zierzier曲线的性质曲线的性质6.2.1 6.2.1 BzierBzier曲线曲线14保凸性保凸性对于Bzier曲线 ,把控制多边形P0P1Pn的终点和起点连接起来,如果P0P1Pn 是个封闭的平面凸多边形,则Bzier曲线 是一段凸的平面曲线 P0PnBzier曲线的保凸性p B B zierzier曲线的性质曲线的性质6.2.1 6.2.1 BzierBzier曲线曲线151 1B B zierzier曲线的几何作图曲线的几何作图p B B zierzier曲线的其他性质曲线的其他性质6.2.1 6.2.1 BzierBzier曲线曲线在控制多边形上以 和为端点的第i条边上找一点,把该边分成的比例,则分点为i=0,1,2,n-1这n个点组成一个新的n-1边形,对该多边形重复上述操作,得到一个边形的顶点,i=0,1,2,n-2依次类推,连续作n次后,得到一个单点,该点就是式 Bzier曲线上参数为t的点 。16P2P4P0P3P1P0,34次Bzier曲线的几何作图过程P0,4P3,1P2,1P0,1,P11P1,2P0,2P22P1,3,1 1B B zierzier曲线的几何作图曲线的几何作图p B B zierzier曲线的其他性质曲线的其他性质6.2.1 6.2.1 BzierBzier曲线曲线17让t在0,1间变动,就得到Bzier曲线,并且向量是曲线在点处的切向量作图过程,可以描述为一个代数递推公式0t1式中l表示递推的步数i表示该点位于相应多边形的第i+1条边上。(*)1 1B B zierzier曲线的几何作图曲线的几何作图p B B zierzier曲线的其他性质曲线的其他性质6.2.1 6.2.1 BzierBzier曲线曲线18上式说明上式说明一条一条n次次Bzierzier曲线可以表示成两曲线可以表示成两条条n-1n-1次次Bzierzier曲线的线性组合。曲线的线性组合。1 1B B zierzier曲线的几何作图曲线的几何作图p B B zierzier曲线的其他性质曲线的其他性质6.2.1 6.2.1 BzierBzier曲线曲线19假设n-1边形按式(*)递推n-1次后生成,n-1边形按式(*)递推n-1次后生成下面用数学归纳法证明按照式递推n次,最终结果就是Bzier曲线上的点 ,即证当n=1时,式(*)显然成立。(*)1 1B B zierzier曲线的几何作图曲线的几何作图p B B zierzier曲线的其他性质曲线的其他性质6.2.1 6.2.1 BzierBzier曲线曲线200t1其中即1 1B B zierzier曲线的几何作图曲线的几何作图p B B zierzier曲线的其他性质曲线的其他性质6.2.1 6.2.1 BzierBzier曲线曲线21根据定义,有+是曲线在t点的切向量。1 1B B zierzier曲线的几何作图曲线的几何作图p B B zierzier曲线的其他性质曲线的其他性质6.2.1 6.2.1 BzierBzier曲线曲线222 2B B zierzier曲线的升阶曲线的升阶Bzier曲线具有整体性,可以使用升阶的方法,增加它升阶的方法,增加它的控制顶点,从而增加对曲线进行形状控制的灵活性。的控制顶点,从而增加对曲线进行形状控制的灵活性。对一条n次Bzier曲线 ,增加一个控制顶点后,得到一条新的n+1次Bzier曲线,如果新的Bzier曲线和原Bzier曲线表示同一条曲线,则新的Bzier曲线的控制顶点可由如下升阶公式决定p B B zierzier曲线的其他性质曲线的其他性质6.2.1 6.2.1 BzierBzier曲线曲线23P1P2P0=P0*P3=P4*P3*P1*P2*Bzier曲线的升阶其中 。新控制多边形是在老控制多边形的凸包内,且更接近对应的Bzier曲线,如下图所示。P0P32 2B B zierzier曲线的升阶曲线的升阶p B B zierzier曲线的其他性质曲线的其他性质6.2.1 6.2.1 BzierBzier曲线曲线24,0t1 由得Bzier曲线的一阶导矢其中称为向前差分矢量,也就是控制多边形的边矢量2 2B B zierzier曲线的导矢曲线的导矢p B B zierzier曲线的其他性质曲线的其他性质6.2.1 6.2.1 BzierBzier曲线曲线25上式表明:上式表明:n次次Bzierzier曲线曲线 的导矢的导矢 是是n-1n-1次次的的BzierBzier曲线,且曲线,且 的控制顶点来自的控制顶点来自 的控制的控制多边形的多边形的n条边矢量,将这条边矢量,将这n条边矢量的起点置于条边矢量的起点置于原点,矢量的末端就是原点,矢量的末端就是 的控制顶点。的控制顶点。2 2B B zierzier曲线的导矢曲线的导矢p B B zierzier曲线的其他性质曲线的其他性质6.2.1 6.2.1 BzierBzier曲线曲线26 一段Bzier曲线常常不足以表示复杂形状的自由曲线,也不满足是样条曲线的条件。为构造较复杂曲线,经常采用曲线拼接的方法,将多段简单Bzier曲线首末拼接起来。设 和为两条次数分n和m m次的Bzier曲线,拼接时在连接点处需满足一定的光滑性要求,和在连接点处满足给定光滑性的条件是:p B B zierzier曲线的拼接曲线的拼接6.2.1 6.2.1 BzierBzier曲线曲线G0连续:连续:QPn-1Pn-2Q1G0连续示意图Pn=27QPn-1Pn-2Q1Pn=G1连续示意图P Pn n=Q Q0 0且Q Q0 0Q Q1 1和P Pn-1n-1P Pn n均不为零且同向,即P Pn-1n-1、P Pn n(Q(Q0 0)和Q Q1 1三点共线G1连续连续:p B B zierzier曲线的拼接曲线的拼接6.2.1 6.2.1 BzierBzier曲线曲线28G2连续:连续:和在连接点处达到G1连续,还要满足 六点共面;和 或同在直线 上或位于直线的同侧,而且其中,点 和点 到和分别表示直线的距离。p B B zierzier曲线的拼接曲线的拼接6.2.1 6.2.1 BzierBzier曲线曲线|P Pn-1n-1P Pn n|2 2|Q Q0 0Q Q1 1|2 229下面推导式:事实上,由下列式子:由得:p B B zierzier曲线的拼接曲线的拼接6.2.1 6.2.1 BzierBzier曲线曲线|P Pn-1n-1P Pn n|2 2|Q Q0 0Q Q1 1|2 2,得:,|P Pn-1n-1P Pn n|2 2|Q Q0 0Q Q1 1|2 230调整曲线 和,使它们在连接处达到G2连续的算法如下:b1Pn-2Pn-1an-1anPnQ0Q1b2Q2Bezier曲线的拼接步骤步骤1 1:平移多边形 使 与 重合。p B B zierzier曲线的拼接曲线的拼接6.2.1 6.2.1 BzierBzier曲线曲线31步骤步骤2 2:围绕点 转动多边形 ,使得与 同向。b1Pn-2Pn-1an-1anPnQ0Q1b2Q2Bezier曲线的拼接p B B zierzier曲线的拼接曲线的拼接6.2.1 6.2.1 BzierBzier曲线曲线32b1Pn-2Pn-1P(t)an-1anPnQ0Q1b2Q2Q(t)Bezier曲线的拼接步骤步骤3 3:围绕线段 转动多边形 ,使得 落在 所确定的平面内,并且与 位于直线 的同一侧。步骤步骤4 4:调整 或 使式 成立。p B B zierzier曲线的拼接曲线的拼接6.2.1 6.2.1 BzierBzier曲线曲线33因为 和在拼合点处的曲率不一定相同,两段三次Bezier曲线的连接P0P1P2P3(Q0)Q1Q2Q3由于使用控制多边形生成曲线,所以曲线拼接的过程很直观,也很容易实现。所以G2拼合至少需要改动一条曲线的形状。p B B zierzier曲线的拼接曲线的拼接6.2.1 6.2.1 BzierBzier曲线曲线34在计算机图形学中经常需要将一段Bzier曲线分成两段利用Bzier曲线的离散性可以求得分成两段曲线的控制顶点,从而将两段子曲线也表示为Bzier曲线的形式p B B zierzier曲线的离散生成曲线的离散生成6.2.1 6.2.1 BzierBzier曲线曲线Bzier曲线经中点分割得到的两段曲线可表示为:和 由下列递推关系确定式中:i=r,r+1,nr=1,2,n35在实际中用的较多的是三次Bzier曲线,n=3 时 的递推关系式如下表所示。该表呈直角三角形P0P1P2P3P11P21P31P22P32P33 n=3n=3时的Pir的递推关系p B B zierzier曲线的离散生成曲线的离散生成6.2.1 6.2.1 BzierBzier曲线曲线垂直的直角边上的点 ,是 的控制顶点;斜边上的点 ,是 分割后第一条曲线的控制顶点;水平的直线边上的点 ,是分割后第二条曲线的控制顶点。此三角形称为此三角形称为de Casteljau三角形三角形36其中 表示点到线段的距离。经过适当次数的割角后,分割得到的每段曲线段都能由其两端点的连线所代替,所以该方法可用来生成Bzier曲线。又由Bzier曲线的凸包性可知:P21Bzier曲线的割角过程P2P1P0P32P11P31P22P32P33p B B zierzier曲线的离散生成曲线的离散生成6.2.1 6.2.1 BzierBzier曲线曲线371 1、直接生成法:、直接生成法:直接通过其参数表示形式生成Bezier曲线p B B zierzier曲线的生成算法曲线的生成算法 6.2.1 6.2.1 BzierBzier曲线曲线2 2、de de CasteljauCasteljau算法:算法:利用Bezier参数曲线如下的分割递推公式生成Bezier曲线0t1l=1,2,n,i=0,1,2,n-l38例题 例例1 已知Bezier曲线的控制点依次为(0,0)、(0,100)、(100,0)、(100,100),用de Casteljau算法求出该曲线在t=1/4处的值,并写出相应的递推三角形 解:解:由于有四个控制点,故决定了一条三次Bezier曲线,为了便于递推,记 =(0,0)、=(0,100)、=(100,0)、=(100,100),de Casteljau递推公式为:P00P01P02P03Pri=(1-t)+t ,r=1,2,3Pr-1iPr-1i+1将t=1/4代入上式,最后得到的 即为所求。P3039 例例2:已知三次Bezier曲线上的四个点分别为(6,0),(3,0),(0,3),(0,6),它们对应的参数分为0,1/3,2/3,1,反求该三次Bezier曲线的控制顶点 解:由Bezier曲线的定义,设三次Bezier曲线的控制顶点依次为P0P1P2P3,则其参数形式为:P(t)=(1-t)3P0+3t(1-t)2P1+3t2(1-t)P2+t3P3 将型值点(6,0),(3,0),(0,3),(0,6)及相应的参数t=0,1/3,2/3,1代入上式得:(6,0)=(1-0)3*P0+3*0*(1-0)2*P1+3*02*(1-0)P2+03*P3(3,0)=(1-1/3)3*P0+3*1/3*(1-1/3)2*P1+3*(1/3)2*(1-1/3)P2+(1/3)3*P3(0,3)=(1-2/3)3*P0+3*2/3*(1-2/3)2*P1+3*(2/3)2*(1-2/3)P2+(2/3)3*P3(0,6)=(1-1)3*P0+3*1*(1-1)2*P1+3*12*(1-1)P2+13*P3计算得:P0=(6,0),P1=(4,-2.5),P2=(-2.5,4),P3=(0,6)40 例例3:设一条三次Bezier曲线的的控制顶点为P0P1P2P3,对曲线上点P(1/2)和一个给定的目标点T,给出一种调整Bezier曲线形状的方法,使得P(1/2)精确通过点T 解:解:保持原三次Bezier曲线的4个控制点不变,在P1、P2之间增加一个控制点Q,则原曲线变为具有5个控制点的4次Bezier曲线,其参数形式为:P(t)=(1-t)4P0+4t(1-t)3P1+6t2(1-t)2Q+4t3(1-t)P2+t4P3 则按要求有:P(1/2)=(P0+4P1+6Q+4P2+P3)/16=T或有:Q=16T-(P0+4P1+4P2+P3)/6 即在在P1、P2之间增加一个控制点Q,并使满足上式,则可调整曲线形状,使P(1/2)精确通过点T 41P356P356,第,第1010题,第题,第1111题题作业作业42