计算机图形学第十章2003.ppt
上传人:sy****28 上传时间:2024-09-13 格式:PPT 页数:88 大小:6.1MB 金币:14 举报 版权申诉
预览加载中,请您耐心等待几秒...

计算机图形学第十章2003.ppt

计算机图形学第十章2003.ppt

预览

免费试读已结束,剩余 78 页请下载文档后查看

14 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第十章B样条曲线曲面、Coons曲面和有理样条曲线曲面Bézier曲线是一段n次多项式曲线,它具有许多优点,如凸包性、保型性等,但也存在缺点:缺少局部性,修改某一个控制顶点将影响整条曲线;曲线与控制多边形的逼近程度较差,次数越高,逼近程度越差;当表示复杂形状时,无论采用高次曲线还是多段低次曲线拼接起来的曲线,都相当复杂。要克服Bézier曲线的缺点,需要对它进行推广。分段多项式曲线10.1.1B样条基函数的定义和性质B样条基函数的推导:即只在区间中为正,在其它地方的值均为零(k>1)。当时,显然成立.假设时成立,现证明时也成立。即上式右端第项的第二项和第项的第一项合并得由的局部性知,如果取,,则根据≥0及上式,可把看作是计算平均值的权.(3)分段多项式在其值不为零的区间上是次数不高于次的多项式,在值为零的区间上是零次多项式,从而它在整个参数轴上是次数不高于次的分段多项式。(4)连续性节点的重数每增加一次,的连续阶就减少一次,因此,在重节点处的连续阶不低于阶。10.1.2B样条曲线的定义和性质(1)局部调整性图(2)仿射不变性B样条曲线和Bézier曲线一样,也具有仿射不变性,即曲线的形状和位置与坐标系的选择无关。(5)凸包性曲线在区间(k-1≤i≤n)上的部分位于k个控制顶点,的凸包内。整条曲线则位于各凸包的并集之内。B样条曲线的变差缩减性(8)造型的灵活性(9)导数曲线上式将同一条曲线由k阶B样条表示成k-1阶B样条。反复运用此公式,最终将得到于是,的值可以通过deBoor算法的递推关系求得。下图反映的是用deBoor算法从得到的递推过程。图10.5所示是deBoor算法的的几何意义,以线段B样条曲线的doboor算法程序演示动画10.1.4三次B样条曲线对于三次均匀B样条曲线,在区间[j,j=1](k-1≤j≤n)上,我们将它表示成矩阵形式取参数变换s=t-j,则。曲线变为则称为四个点定义的三次B样条曲线段的一组基函数,即对三次B样条曲线上由,,和四点定义的一段曲线可表示成P(t)(1)端点位置矢量(3)端点处二阶导数矢量若,,三点共线,均匀三次B样条曲线将产生拐点,拐点在s=0处若,,,四点共线,则变成一条直线段;若,,三点重合,则过点,巧妙地利用三次B样条中的顶点重合会产生所需要的多种曲线。i设节点向量,(≤,≤)分别是对参数平面的轴和轴的分割,如图10.7所示。称下列张量积形式的参数曲面为(k≤n,h≤m)阶的B样条曲面,uk-1≤u≤un+1,vh-1≤v≤vm+1其中是空间中给定的(n+1)×(m+1)个网格点,通常称为的控制顶点。,分别是关于节点向量U,V的k阶和h阶的B样条基函数。由两组多边形()和()组成的网格(如图10.8)称为的控制网格,简记为。与Bézier曲面一样,是对曲面的大致形状的勾画,是对的逼近。B样条曲面也具有局部调整性、凸包性、几何不变性等,它的控制网格也是人机交互的手段,也可以通过deBoor算法对其进行计算,这些都与B样条曲线的情况类似。双三次B样条曲面片10.2Coons曲面Bézier曲面和B样条曲面的特点是曲面逼近控制网格。而Coons曲面的特点是插值,即对四边形四条边界上给定的边界曲线段进行插值,构造的曲面满足给定的边界条件,例如通过给定边界,具有给定的跨界导矢等等,其中给定的边界可以是任意形式的曲线。Coons曲面中最简单的曲面片。构造对四个顶点插值的双线性Coons曲面,显然,满足给定的四个插值条件,即为所求的双线性Coons曲面。10.2.2双三次Coons曲面其中下面讨论双三次Coons曲面的性质。这是以式由式(10.10)知在边v=0上的跨界导矢为,0≤u≤1这是以式(10.11)中矩阵的第三列元素为系数的三次Hermite曲线.其余各条边界的跨界导矢,,分别是以该矩阵的第4列、第3行和第4行的元素为系数的三次Hermite曲线。第十章B样条曲线曲面、Coons曲面和有理样条曲线曲面1.三次B样条曲线到三次Bézier曲线的转化由deBoor算法知下列公式成立(1)(2)同理又因为所以同理可证(2)的第二个式子成立。即可表示为{inti,k;if(t[j]<t[j+1]){for(k=0;k<=1;k++){for(i=0;i<=1;i++){temp=(t[j+k]-t[j-2+k+i]/(t[j+1+i+k]-t[j-2+k+i]);V[2*k+i][0]=temp*P[j-2+i+k][0]+(1-temp)*P[j-2+i+k-1][0];V[2*k+i][1]=temp*P[j-2+i+k][1]+(1-temp)*P[j-2+i+