1、1车车 身身 制制 图图山东交通学院山东交通学院汽车工程系汽车工程系主讲:主讲: 邱绪云邱绪云10-11第第2学期第学期第8周周2011-4-212 主要讲授内容主要讲授内容nCAGD发展;发展;n几何造型技术;几何造型技术;n参数曲线和曲面;参数曲线和曲面;nB样条曲线与曲面;样条曲线与曲面;nNURBS曲线与曲面;曲线与曲面; 第第3章章 车身曲线曲面的数学模型基础车身曲线曲面的数学模型基础33. 0P1P2P3P图3.1.8 三次Bezier曲线0P1P2P3P43. 1 1定义定义 给定空间给定空间n+1个点的位置矢量个点的位置矢量Pi i(i=0,1,2,n n),则),则Bezie
2、r曲线可定义为:曲线可定义为: 1 , 0),()(,0ttBPtPniini)(),(),()(tztytxtP注意:注意:(,)iiiiPxyz53. n 其中,其中,Pi 构成该构成该Bezier曲线的特征多边曲线的特征多边形,形,Bi,n(t)是是n次次Bernstein基函数:基函数:n0 =1, 0!=1), 1 , 0( )1 ()!( !)1 ()(,nittininttCtBiniiniinni 63.三次三次Bernstein基函数及曲线基函数及曲线三次三次Bernstein基函数基函数 (1 )f (t )t(1 )B1 ,3B1 ,3B0 ,3B2 ,3B3 ,3当当n
3、=3时,时,B0,3(t)=(1-t)3,B1,3(t)=3t(1-t)2,B2,3(t)=3t2(1-t),B3,3(t)=t3。注意:注意:三次三次Bernstein基基函数函数 性质影响曲线性质。性质影响曲线性质。73. 3 3BezierBezier曲线的性质曲线的性质(1)端点性质)端点性质 a)曲线端点位置矢量曲线端点位置矢量 由由Bernstein基函数的端点性质可以推得,基函数的端点性质可以推得,当当t=0t=0时,时,P(0)=PP(0)=P0 0 ;当;当t=1t=1时,时,P(1)=PnP(1)=Pn。由此。由此可见,可见,BezierBezier曲线的起点、终点与相应的
4、特征曲线的起点、终点与相应的特征多边形的起点、终点重合。多边形的起点、终点重合。83. (2)对称性。由控制顶点对称性。由控制顶点 构造出的新构造出的新Bezier曲线,与原曲线,与原Bezier曲线形状相同,走向相反。曲线形状相同,走向相反。因为:因为:这个性质说明这个性质说明Bezier曲线在起点处有什么几何性质,曲线在起点处有什么几何性质,在终点处也有相同的性质。在终点处也有相同的性质。),.,1 , 0( ,*niPPinininininiininininniinniittBPtBPtBPtBPtC000,0,* 1 , 0),1 ()1 ()()()(*93. (6)交互能力)交互能
5、力 改变曲线的形式,只需改变控制点改变曲线的形式,只需改变控制点Pi i 。(7)可分割性)可分割性) 3/1 (30PP 011/3图3.1.12 几何作图法求Bezier曲线 上一点(n=3,t=1/4)0P1P2P3P10P11P12P20P21P103. 计算计算Bezier曲线上的点,可用曲线上的点,可用Bezier曲线方程,但使曲线方程,但使用用de Casteljau提出的递推算法则要简单的多。提出的递推算法则要简单的多。 如下图所示,设如下图所示,设 、 、 是一条抛物线上顺序三个是一条抛物线上顺序三个不同的点。过不同的点。过 和和 点的两切线交于点的两切线交于 点点,在在 点
6、的切线点的切线交交 和和 于于 和和 ,则如下比例成立:,则如下比例成立:这是所谓这是所谓。0P20P2P0P2P1P20P0P1P2P1P10P11P11202010211111110100PPPPPPPPPPPP113. 0P1P2P11P10P20PBezier曲线上的点图3.1.10 抛物线三切线定理123. 当当P0 0,P2 2固定,引入参数固定,引入参数t,令上述比值为,令上述比值为t:(1-t),即有:,即有: t从从0变到变到1,第一、二式就分别表示控制二边形的第一、二,第一、二式就分别表示控制二边形的第一、二条边,它们是两条一次条边,它们是两条一次Bezier曲线。将一、二
7、式代入第三式得:曲线。将一、二式代入第三式得: 当当t从从0变到变到1时,它表示了由三顶点时,它表示了由三顶点P0 0、P1 1、P2 2三点定义的三点定义的一条二次一条二次BezierBezier曲线。并且表明:这二次曲线。并且表明:这二次BezierBezier曲线曲线P2 20 0可以可以定义为分别由前两个顶点(定义为分别由前两个顶点(P0 0,P1 1)和后两个顶点()和后两个顶点(P1 1,P2 2)决定的一次决定的一次BezierBezier曲线的线性组合。依次类推,由四个控制点曲线的线性组合。依次类推,由四个控制点11102021111010)1 ()1 ()1 (tPPtPtP
8、PtPtPPtP2210220)1 (2)1 (PtPttPtP11202010211111110100PPPPPPPPPPPP133. 定定义的三次义的三次BezierBezier曲线曲线P3 30 0可被定义为分别由可被定义为分别由( (P0 0,P1 1,P2 2) )和和( (P1 1,P2 2,P3 3) )确定的二条二次确定的二条二次BezierBezier曲线的线性组合,由曲线的线性组合,由(n+1)(n+1)个控制点个控制点Pi i(i=0, 1, ., n)(i=0, 1, ., n)定义的定义的n n次次BezierBezier曲线曲线Pn n0 0可被定可被定义为分别由前
9、、后义为分别由前、后n n个控制点定义的两条个控制点定义的两条(n-1)(n-1)次次BezierBezier曲线曲线 P0 0n-1n-1与与P1 1n-1n-1的线性组合:的线性组合:由此得到由此得到Bezier曲线的递推计算公式:曲线的递推计算公式:这便是著名的这便是著名的de Casteljau算法。用这一递推公式,在给定参算法。用这一递推公式,在给定参数下,求数下,求Bezier曲线上一点曲线上一点P(t)非常有效。上式中:是定义非常有效。上式中:是定义Bezier 1 , 0)1 (11100ttPPtPnnnkninktPPtkPPkikiiki,.,1 , 0,.,2 , 1)
10、1 (0111143. 曲线的控制点,曲线的控制点, 即为曲线即为曲线 上具有参数上具有参数t的点。的点。de Casteljau算法稳定可靠,直观简便,可以编出十分简捷的程序,是计算算法稳定可靠,直观简便,可以编出十分简捷的程序,是计算Bezier曲线的基本算法和标准算法。曲线的基本算法和标准算法。当当n=3时,时,de casteljau算法递推出的算法递推出的Pk ki i呈直角三角形,对应结呈直角三角形,对应结果如图果如图3. .1. .11所示。从左向右递推,最右边点所示。从左向右递推,最右边点P3 30 0即为曲线上的即为曲线上的点。点。nP0)(tP153. 0P1P2P3P10
11、P11P12P20P21P30P图3.1.11 n=3时niP的递推关系163. void CMyView:bezier_DeC ( DCPoint a, DCPoint b, DCPoint c, DCPoint d )DCPoint t1, t2, t3, t4, t5;t1.x = (a.x + b.x )/2;t1.y = (a.y + b.y )/2;t2.x = (c.x + b.x )/2;t2.y = (c.y + b.y )/2;t3.x = (c.x + d.x )/2;t3.y = (c.y + d.y )/2;t4.x = (a.x + b.x + c.x + b.x
12、)/4;t4.y = (a.y + b.y + c.y + b.y )/4;t5.x = (c.x + d.x + c.x + b.x )/4;t5.y = (c.y + d.y + c.y + b.y )/4;t2.x = (a.x + b.x + c.x + b.x + c.x + d.x + c.x + b.x)/8;t2.y = (a.y + b.y + c.y + b.y + c.y + d.y + c.y + b.y)/8;if (pow (a.x - t2.x),2) + pow (a.y-t2.y),2)25) bezier_DeC (a, t1, t4, t2 );173.
13、else :Sleep(5);ddaline (a.x, a.y, t1.x, t1.y, COLOR);ddaline (t1.x, t1.y, t4.x, t4.y, COLOR);ddaline (t4.x, t4.y, t2.x, t2.y, COLOR);if (pow (d.x - t2.x),2) + pow (d.y-t2.y),2)25) bezier_DeC (t2, t5, t3, d);else :Sleep(5);ddaline (t2.x, t2.y, t5.x, t5.y, COLOR);ddaline (t5.x, t5.y, t3.x, t3.y, COLOR
14、);ddaline (d.x, d.y, t3.x, t3.y, COLOR);183. 这一算法可用简单的几何作图来实现。给定参数这一算法可用简单的几何作图来实现。给定参数 ,就把定义域分成长度为,就把定义域分成长度为 的两段。依次对的两段。依次对原始控制多边形每一边执行同样的定比分割,所得分原始控制多边形每一边执行同样的定比分割,所得分点就是由第一级递推生成的中间顶点点就是由第一级递推生成的中间顶点 , 对这些中间顶点构成的控制多边形再执行同样的定比对这些中间顶点构成的控制多边形再执行同样的定比分割,得第二级中间顶点分割,得第二级中间顶点 。重复进行下。重复进行下去,直到去,直到n级递推得
15、到一个中间顶点级递推得到一个中间顶点 即为所求曲线上即为所求曲线上的点的点 ,如图,如图3.1.12.1.12所示所示。 1 , 0t)1 ( :tt) 1, 1 , 0(1niPi)2, 1 , 0(2niPinP0)(tP193. 3203. 0P1P2P3P10P11P12P20P21P30P图3.1.11 n=3时niP 的递推关系3. 22练习练习写出三次写出三次Bezier曲线的递推计算公式:给出曲线的递推计算公式:给出P0(1,1), P1(4,4), P2(8,4), P3(10,2),用递推算法和用递推算法和Bezier曲线定义公曲线定义公式,分别计算式,分别计算t=0.2,
16、t=0.8 Bezier曲线的点。曲线的点。)t(30PP 01t0P1P2P3P10P11P12P20P21P233. 几何设计中,一条几何设计中,一条Bezier曲线往往难以描述复杂的曲线往往难以描述复杂的曲线形状。这是由于增加由于特征多边形的顶点数,曲线形状。这是由于增加由于特征多边形的顶点数,会引起会引起Bezier曲线次数的提高,而高次多项式又会带曲线次数的提高,而高次多项式又会带来计算上的困难,实际使用中,一般不超过来计算上的困难,实际使用中,一般不超过10次。所次。所以有时采用分段设计,然后将各段曲线相互连接起来,以有时采用分段设计,然后将各段曲线相互连接起来,并在接合处保持一定
17、的连续条件。下面讨论两段并在接合处保持一定的连续条件。下面讨论两段Bezier曲线达到不同阶几何连续的条件。曲线达到不同阶几何连续的条件。243. 253. 给定两条给定两条Bezier曲线曲线P(t)和和Q(t),相应控制点为,相应控制点为Pi i(i=0, 1, ., n)和和Qj j(j=0,1,., m),且令,且令 ,如图,如图3. .1. .13所示,所示,我们现在把两条曲线连接起来。我们现在把两条曲线连接起来。 图图3. .1.13.13 Bezier曲线的拼接曲线的拼接11,jjjiiiQQbPPab1Pn-2Pn-2Pn-1P(t)an-1anPnQ0Q1b2Q2Q(t)26
18、3. (1)要使它们达到)要使它们达到G0 0连续的充要条件是:连续的充要条件是:Pn n= Q0 0;(2)要使它们达到)要使它们达到G1连续的充要条件是:连续的充要条件是:Pn-1n-1,Pn n=Q,Q1 1三三点共线,即:点共线,即:(3)要使它们达到)要使它们达到G2连续的充要条件是:在连续的充要条件是:在G1连续的条件下,连续的条件下,并满足方程并满足方程 我们将我们将 、 和和 , 、 代入,并整理,代入,并整理,可以得到:可以得到: 选择选择 和和 的值,可以利用该式确定曲线段的值,可以利用该式确定曲线段 的特征多边的特征多边形顶点形顶点 ,而顶点,而顶点 、 已被已被 连续条
19、件所确定。要达到连续条件所确定。要达到 连连续的话,只剩下顶点续的话,只剩下顶点 可以自由选取。可以自由选取。)0(1nab) 1 () 1 ()0(2PPQ)0(Q) 1 (P) 1 (PnPQ 0)(121nnPPQQ221222122112nnnPPnPnQ)(tQ2Q0Q1Q1G2G2Q273. 如果从上式的两边都减去如果从上式的两边都减去 ,则等式右边可以表示为,则等式右边可以表示为 和和 的的 线性组合:线性组合:这表明这表明 、 、 、 和和 五点共面,事实上,在接五点共面,事实上,在接合点两条曲线段的曲率相等,主法线方向一致,我们合点两条曲线段的曲率相等,主法线方向一致,我们还
20、可以断定:还可以断定: 位于直线位于直线 的同一侧。的同一侧。nP)(1nnPP)(21nnPP)()(12212122nnnnnPPPPnPQ2nP1nP0QPn1Q2Q2nP2Q11QPn283. 1Bezier曲线的升阶曲线的升阶 所谓所谓是指保持是指保持Bezier曲线的形状与定向不变,曲线的形状与定向不变,增加定义它的控制顶点数,也即是提高该增加定义它的控制顶点数,也即是提高该Bezier曲曲线的次数。线的次数。增加了控制顶点数,不仅能增加了对曲增加了控制顶点数,不仅能增加了对曲线进行形状控制的灵活性,还在构造曲面方面有着线进行形状控制的灵活性,还在构造曲面方面有着重要的应用。对于一
21、些由曲线生成曲面的算法,要重要的应用。对于一些由曲线生成曲面的算法,要求那些曲线必须是同次的。应用升阶的方法,我们求那些曲线必须是同次的。应用升阶的方法,我们可以把低于最高次数的的曲线提升到最高次数,而可以把低于最高次数的的曲线提升到最高次数,而获得同一的次数。获得同一的次数。293. 1Bezier曲线的升阶曲线的升阶 曲线升阶后,原控制顶点会发生变化。下面,我曲线升阶后,原控制顶点会发生变化。下面,我们来计算曲线提升一阶后的新的控制顶点。们来计算曲线提升一阶后的新的控制顶点。设给定原始控制顶点设给定原始控制顶点 ,定义了一条,定义了一条n次次Bezier曲线:曲线:nPPP,10 1 ,
22、0)()(0,ttBPtPniniiiniinnittCtB)1 ()(,303. 增加一个顶点后,仍定义同一条曲线的新控制顶点为:增加一个顶点后,仍定义同一条曲线的新控制顶点为:则:则:其中:其中:*1*1*0,nPPP) 1, 1 , 0(1111*niPniPniPiii011nPP313. 结论:结论:新的控制顶点新的控制顶点 是以参数值是以参数值 按分段线性按分段线性插值从原始特征多边形得出的。插值从原始特征多边形得出的。升阶后的新的特征多边形在原始特征多边形的升阶后的新的特征多边形在原始特征多边形的凸包内凸包内特征多边形更靠近曲线。特征多边形更靠近曲线。 三次三次Bezier曲线的
23、升阶实例如下图曲线的升阶实例如下图所示。所示。*iP1ni323. *00PP 1P2P*43PP *1P*2P*3P Bezier曲线升阶333. 2Bezier曲线的降阶曲线的降阶 降阶是升阶的逆过程。给定一条由原始控制顶点降阶是升阶的逆过程。给定一条由原始控制顶点 定定义的义的n次次Bezier曲线,要求找到一条由新控制顶点曲线,要求找到一条由新控制顶点 定定义的义的n-1次次Bezier曲线来逼近原始曲线。曲线来逼近原始曲线。 假定假定 是由是由 升阶得到,则由升阶公式有:升阶得到,则由升阶公式有:从这个方程可以导出两个递推公式:从这个方程可以导出两个递推公式:和和), 1 , 0(niPi) 1, 1 , 0(*niPiiP*iP*1*iiiPniPninP*10,1,1iiinPiPPinni1 , 1,)(*1nniiPinnPPiii343. n两种降阶格式两种降阶格式nForrest 格式格式nFarin格式格式 1, 121, 21, 1 , 0,*#nniPniPPiii*#1)11 (iiiPniPniP