资源预览内容
第1页 / 共48页
第2页 / 共48页
第3页 / 共48页
第4页 / 共48页
第5页 / 共48页
第6页 / 共48页
第7页 / 共48页
第8页 / 共48页
第9页 / 共48页
第10页 / 共48页
亲,该文档总共48页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第九章 曲线曲面表示曲线曲面的表示是计算机图形学的重要内容。它 是描述物体外形、建立物体数学模型的有力工具 。在计算机图形学中,曲线曲面都是采用分段或分 片参数多项式的形式。采用分段参数方式有很多好处:曲线曲面形状不 依赖坐标系的选取;有直观简便的人机交互手段 ;容易离散生成;造型灵活、易于拼接。本章介绍一些常用曲线曲面的算法和性质。 显式、隐式和参数表示曲线(面)的显式表示:y=f(x)曲线(面)的隐式表示:f(x,y)=0曲线(面)的参数表示:x=x(t),y=y(t)显式表示特点:每一个x值只能对应一个y值;不 能表示封闭或多值曲线,例如圆。隐式表示特点:可以表示封闭或多值曲线。非参数表示(显、隐)特点:与坐标轴相关;会 出现斜率无穷大情况;非平面曲线(面)难以常 系数函数表示;不便于计算和编程。参数表示点的每一个坐标都表示成参数变量的函数参数整个变化范围对应整条曲线,但往往只 对某一部分感兴趣,通过规格化使参数的变 化范围限制在0,1中。参数方程的优越性有更大的自由度来控制曲线(面)的形状。如一 条二维三次曲线显性表示:y=ax3+bx2+cx+d,只 有四个系数可用来控制曲线(面)形状,非参数方程表示的曲线(面)变换时必须对每个 型值点进行变换;参数方程表示的曲线(面)变 换时可直接对参数方程进行几何变换,节省计算 量便于处理斜率为无穷大的问题,不会因此中断计 算 规格化参数变量变化范围为0,1,不必为参数定 义边界易于用矢量和矩阵表达,简化了计算参数曲线定义一条三维曲线的参数形式: x=x(t),y=y(t),z=z(t),0t 1曲线上任意一点可用矢量p(t)=x(t),y(t),z(t)表示。 起始点在t=0处,即p(0),终点p(1)在t=1处曲线上任意一点切矢量表示了曲线上该点的切线 方向,可以表示曲线在该点处的走向。切矢量表 示为:p(t)=x(t),y(t),z(t) 。起始点t=0处切矢量 ,为p(0),p(1)表示在终点t=1处切矢量。Bezier曲线在空间给定n+1个点P0,P1,Pn,称下列参数曲 线为n次Bezier曲线:其中,Ji,n(t)是Bernstein基函数:称折线为P0P1Pn为P(t)的控制多边形;称点P0, P1,Pn为P(t)的控制顶点。控制多边形P0P1Pn 为P(t)的大致形状的勾画, P(t)是对P0P1Pn的 逼近。(9-1)(9-2)Bezier曲线的性质(1)端点的位置 P0和Pn是曲线P(t)的两个端点。 由式(9-1),(9-2)可得:p(0)=P0, p(1)= Pn端点的切线 P(t)在起点处与P0P1相切,在终点处与Pn-1Pn相切P0PnP1Pn-1由式(9-1),(9-2)可得:P(0)=n(P1-P0), p(1)=n(Pn-Pn-1)Bezier曲线的性质(2)凸包性P(t)位于控制顶点 P0, P1,Pn的凸包内几何不变性 曲线的形状仅由控制点的位置决定,与所选用的 坐标系无关。交互能力 控制点的位置决定了曲线的形状,变换控制点位 置,就可以改变曲线的形状。为人机交互确定曲 线形状提供了手段。P0PnP1Pn-1Bezier曲线的拼接(1)一段Bezier曲线常常不足以表现复杂的曲线。为了构造复 杂的曲线,常用曲线拼接的方法,即用一段段的曲线首尾 相连起来。 不同的问题在连接点对曲线连续性有不同的要求: 零阶几何连续:首位连在一起即可。不光滑。 一阶几何连续:在连接点处曲线方向相同。光滑,但变化 趋势不同 二阶几何连续:两段曲线在连接处,不仅光滑连接,曲率 也相同。零阶几何连续一阶几何连续二阶几何连续Bezier曲线的拼接(2)设两段Bezier曲线P(t), Q(t)首尾相接零阶几何连续就是要求:P(1)=Q(0)。 由Bezier曲线的Q(0)=Q0, P(1)= Pn , 所以要 使两段两段Bezier实现零阶几何连续拼接, 就要求Pn = Q0, 即前一段曲线的最后一个控 制点和后一段曲线的第一个控制点重合。Bezier曲线的拼接(3)一阶几何连续就是要求:P(1)=Q(0)。 由式(9-1),(9-2)可得: P(1)=n(Pn-Pn-1) , Q(0)=m(Q1-Q0)Pn-1Pn (Q0)Q1Pn-Pn-1Q1-Qn几何意义就是要求:Pn-1 , Pn (Q0) ,Q1点在 同一条直线上,且Pn-1 , Q1分别在Pn (Q0) 两 边Bezier曲线的拼接(4)二阶几何连续就是要求:P”(1)=Q”(0)。 由式(9-1),(9-2)可得:P”(1)=n(n-1)(Pn-2Pn-1+Pn-2) =n(n-1)(Pn-Pn-1 + Pn-2 -Pn-1 ) Q”(0)=m(m-1)(Q2- 2Q1+Q0)= m(m-1)(Q2-Q1+Q0 -Q1)Pn-Pn-1Pn-2 -Pn-1Q0 -Q1Q2-Q1几何意义:除了对Pn-1 , Pn (Q0) , Q1控制点的 位置有要求外,还对Pn-2 , Q2控制点的位置有 要求。它们的位置必须 使两个红色的矢量相等Bezier曲线的生成(1)在实际应用Bezier曲线段绘制曲线时,常运 用3次曲线,即n=3。这是因为:一次曲线是直线,二次曲线是抛物线,它们 表现复杂曲线的变化能力稍差;而三次曲线 在一个小的局部,足够了。次数太大,数学计算量大,且容易产生累积 误差,影响精度。次数太大,一段曲线的控制点太多,不利于 人机交互调整曲线形状。Bezier曲线的生成(2)下面来推导3次Bezier曲线的计算公式n=3 由式(9-1),(9-2)可得:用矩阵表示如下:(9-3)(9-4)Bezier曲线的生成(3)P(t)是空间点,用坐标形式表示为x(t),y(t),z(t)由式(9-3)可知,实际坐标值可用下式分别计算:只要在0,1计算若干个t值,如t=0,0.1,0.2,1,求出相应的 坐标,用直线将这些点连接起来,就构成了曲线。若要画二维曲线,只要计算x(t),y(t)。(9-5)P(t)的三个分量Bezier曲线的手工生成(1)Bezier曲线上的点可以根据控制点精确得到P0P1P2P3P0 P1 P2 P0 “P1 “ P0 “P0P1P2P3P0 P1 P2 P0 “P1 “ P0 “Bezier曲线的手工生成(2)P0”是曲线上的点P(1/2)如果每次取得不是中点,而 是1/3点,最终得到的点是 P(1/3)如果每次取得不是中点,而 是1/n点,最终得到的点是 P(1/n)P0”将一段曲线分成两段, 每一段成为一段新的Bezier 曲线,其新的控制点如图所 示 在新的Bezier曲线上可以继 续精确取点P0P1P2P3P0 P1 P2 P0 “P1 “ P0 “反算Bezier曲线控制点给定n+1个型值点Qi(i=0,1,n),要求构成的 Bezier曲线通过这些点。取参数ti=i/n与Qi相对应根据式9-1,Bezier曲线方程为 解n+1个方程,得到P0 ,P1 Pn曲线控制点Bezier曲线升阶增加控制点,提高对曲线的灵活控制。升阶前后,曲线形状不发生变化。通过公式变换,找出升阶前后控制点之间的关系 。升阶前:升阶后:两者曲线相同:左式乘以(t+(1-t):Bezier曲线升阶比较两边同类项的系数得:化简得:例:一段3次曲线,控制点为P0,P1,P2,P3 ,升阶为4 次曲线控制点为Q0,Q1,Q2,Q3,Q4 ,两者关系为 Q0=P0,Q1=1/4P0+3/4P1 ,Q2=2/4P1+2/4P2 Q3=3/4P2+1/4P3 , Q4=P3。Bezier曲线升阶新的控制点是对老的控制多边形在参数 i/(n+1)处进行线性插值的结果升阶后的新控制多边形在老控制多边形凸包 中升阶后的新控制多边形比老控制多边形更接 近Bezier曲线B样条曲线B样条曲线定义:设P1,P2,Pn(n=k)为给定空间的n个点,称下 列参数曲线为k阶或k-1次的样条曲线。折线 P1,P2,Pn为 P(t)的控制多边形,这n个点为P(t)的控制顶点。B样条曲线定义式与Bezier曲线形式类似,不同 之处在于,其基函数由Bernstein基函数变成了B 样条基函数Bi,k(t)(9-6)B样条基函数 B样条基函数是由参数k的递推关系所定义的其中,T=ti, i=0, 1, 2,是对参数轴t的一个划分。如果划分是等距离的,即对于任意i, ti+1 - ti=(i+1)-i=1,形 成的是均匀B样条曲线。我们只讨论均匀B样条曲线0,其它ti-1 ti ti+1B样条基函数分析B样条基函数是递推定义:B样条基函数的次数: k=1时, Bi,k(t) 为常数1, 0次; k=2时, Bi,k(t) 为1次; k=3时, Bi,k(t) 为二次函数; k=4时, Bi,k(t) 为三次函数。B样条基函数分析局部性Bi,1(t) 的定义域为ti,ti+1)Bi,2(t) 由两段Bi,1(t), Bi+1,1(t)组成,定义域为 ti,ti+1) ti+1,ti+2) = ti,ti+2) Bi,3(t)的定义域为ti,ti+3)Bi,4(t)的定义域为ti,ti+4) 这意味着一个控制点Pi对整个曲线的影响只局限在k个分 割区域ti,ti+k)中B样条基函数分析反之,一段定义在区间ti,ti+1)上的B样条曲 线Pi(t)只由k个控制点决定Pi-k ,Pi-1 ,Pi ,。整个B样条曲线就是这样一段一段绘制完成 的只要能解决一段定义在区间ti,ti+1)上的B样 条曲线Pi(t)的绘制就能绘制整段曲线。Piti-1 ti ti+1Pi-1Pi-2B样条曲线段的绘制 以最简单的k=2情况为例,说明如何由定义式 推出曲线段的计算公式:k=2,一段曲线Pi,2(t)只有两个控制点。由式( 9-6)可得:其中因为B样条曲线段的绘制所以同理在t2tt3中因为:ti=i令t=t-t20t1在定义域 范围内B样条曲线段的绘制 参数仍用t表示,可得k=2时: 同样,k=3、4时可以得到第i段曲线的矩阵表示:(9-7)(9-8)(9-9)B样条曲线段的绘制 对于n个控制点的构成的整个k阶曲线,整个曲 线表示如下:整个曲线共由n-k+1个曲线段组成;第一个曲线段为 ,最后一个曲线段为曲线段 其形状由k个控制点Pi-k+1,Pi-k+2,Pi 的位置确定。 只要绘制出每一个曲线段,就能绘制出整个阶曲 线。B样条曲线的性质以一段3次曲线(k=4)为例,说明B样条曲线的性质 。P(t)的控制点为P1,P2,P3,P4 。1、端点:P(t)的起点为P(0) ,终点为P(1) 。由式 (9-9) P(0) =1/6(P1+4P2+P3) ,P(1) =1/6(P2+4P3+P4) 先看起点, P(0) =P2+1/3 (1/2( P1+P3 ) -P2) 一个空间点可以看成是一个空间矢量。以平面上 的点和平面矢量为例,回顾矢量加减法B样条曲线的性质OP3P1P2P2P2 P3=P1+P2P1=P3-P2P4=1/2(P1+P2)P4P1P2P3P4点:(P1+P3)红色矢量: (P1+P3)- P2蓝色矢量: 1/3(P1+P3)- P2)点:P2+ 1/3(P1+P3)- P2)P(0)P(1)B样条曲线的性质 2、端点的切线:P(0),P(1)我们讨论切线,只是想了解曲线的方向。由式( 9-9) P(
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号