显示曲线和曲面.ppt
显示曲线和曲面 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望第十章第十章三维对象表示2第十章之第四节第十章之第四节 显示曲线和曲面显示曲线和曲面3主要内容主要内容l介绍绘制曲线的方法用直线段近似有限差分l推导出计算Bzier曲线和曲面的递推方法l学会如何把多项式数据转化为Bzier多项式所需要的数据4多项式的计算多项式的计算l显示多项式曲线的最简单方法就是计算出多项式上许多点的值,从而形成一条近似的折线l对于曲面,可以形成近似的三角网格或者四边网格l应用Horner方法计算p(u)=c0+u(c1+u(c2+uc3)对于三次的情形,只需要三次乘法5有限差分有限差分对于等间距的 uk,如下定义有限差分对于n次多项式,n 阶差分的结果是一个常数6建立有限差分表格建立有限差分表格p(u)=1+3u+2u2+u37求出下一个值求出下一个值从底部开始,依次向上可以求出多项式的新值8De Casteljau 算法算法l从3个点P0,P1,P2开始选定一个 t0,1A(t)=(1-t)P0+tP1 ;B(t)=(1-t)P1+tP2P(t)=(1-t)A+tB P(t)=(1-t)2 P0+2t(1-t)P1+t2 P2BAPP1P0P2t=0.3P1P0P2P(0.3)P(t)9De Casteljau 算法算法l4个控制点呢?P(t)=(1-t)3 P0+3t(1-t)2 P1+3t2(1-t)P2+t3 P31-tt1-ttt1-tP0P1P2P3P(t)10De Casteljau 算法算法l扩展到任意n+1个控制点从Pi0(t)=Pi开始,结束于 P(t)=P0n(t)Bezier曲线的另一定义11Bzier曲线分割曲线分割lP(t*)把曲线一分为二:0,t*、t*,1怎样求出这两段曲线的控制点?给出了一种曲线绘制方法12示例示例p0,p1,p2,p3 确定了一条三次Bezier曲线考虑左半部分 l(u)和右半部分 r(u)13l(u)和和 r(u)l(u)和r(u)也是Bezier曲线,控制顶点分别为:l0,l1,l2,l3 和 r0,r1,r2,r314有效形式有效形式l0=p0r3=p3l1=(p0+p1)r2=(p2+p3)l2=(l1+(p1+p2)r1=(r2+(p1+p2)l3=r0=(l2+r1)只需要移位和加法!15所有曲线都是所有曲线都是Bezier曲线曲线l如果能找到给定多项式曲线表示为Bzier曲线所需要的控制顶点,那么就可以应用递推方法显示它l假设p(u)是以插值曲线的形式给出,数据点为q:l那么存在Bzier控制点p使得l列出方程并求解,可得 p=MB-1MIqp(u)=uTMIqp(u)=uTMBp16矩阵矩阵插值形式到Bezier形式B样条到Bezier形式17示例示例生成这些曲线的初始数据是相同的,但生成时都是把它们转化为Bzier控制顶点,然后采用Bzier递推方法BezierInterpolatingB-Spline18曲面曲面l由于Bezier曲面片对应的u(v)线为Bezier曲线,因此曲面也可用递推方法l首先,沿 u 方向细分 得到新的点 原来的某些控制顶点被抛弃被保存下来的初始点新增加的点被抛弃的初始点19第二次细分第二次细分生成1/4曲面片创建了16个点20Utah 茶壶茶壶l计算机图形学中最著名的数据集l通常用到的是由306个三维顶点定义的32张Bzier曲面片21二次曲面二次曲面l任何二次曲面都可以表示成 pTAp+bTp+c=0,这儿 p=x,y,zT A,b 和 c 为系数l用光线跟踪方法绘制求解参数方程 p(a)=p0+ad 表示的光线 与曲面的交解一个二次方程无解:光线错过曲面一个解:光线与曲面相切两个解:穿入并穿出曲面22