《《计算机图形学》练习题(答案)》由会员分享,可在线阅读,更多相关《《计算机图形学》练习题(答案)(11页珍藏版)》请在金锄头文库上搜索。
1、计算机图形学练习题(答案)计算机图形学练习题1 .直线扫描转换的Bresenham算法(1)请写出生成其斜率介于。与1之间的直线的Bresenham算法步骤。(2)设一直线段的起点与终点坐标分别为(1,1)与(8,5),请用Bresenham算法生成此直线段确定所有要绘制象素坐标。(1) 输入线段的两个端点,并将左端点存储在(x0,y0)中将(x0,y0)装入帧缓存,画出第一个点计算常量?x,?y,2?y,and2?y-2?x,并得到决策参数的第一个值:p0=2?y-?x从k=0开始,在沿线路径的每个xk处,进行下列检测:如果pk$壬7.50,510-L14-0-810图(8)扫描线,的活动边
2、表P2P35U2.05PIP士10(J:8P4ps13 0-0.8107.0IS8P6P1610PSP610图(9)各扫描线的新边表8.由坐标A(0,0,0),B(1,0,0),C(0,1,0),D(0,01)确定的锥体绕直线L旋转450,其中L的方向为V=J+K,且通过点C(0,1,0)。写出锥体旋转后的坐标。9、设3次参数多项式函数P(u)=au3+bu2+cu+d,求出满足下列边界条件的3次Hermite插值P(0) =P P=PP 1曲线(用矩阵表示):kk+1(0)=DPk(1)=DPk+110、Cohen-Sutherland直线段裁剪算法与Liang-Barsky直线段裁剪算法就
3、是直线段裁剪的两种基本算法,试述两种算法的基本原理,并分析它们的优点与不足。(1)通过一个矩形的裁剪区域将整个屏幕分成9个部分,并为每一个部分赋予相应的区域码,然后根据端点的位置确定这个端点的区域码。先判断能否完全接受或者完全排除一条线段,若以上2个判断无法直接得出,则逐步裁剪,选取一个位于裁剪区外的端点,把端点的区域码与裁剪边界的区域码进行逻辑与运算,若结果为真,则端点在该裁剪边界外部,这时将端点移向线段与该边界的交点处,如此循环,直到裁剪结束。(2)利用线段的参数表达形式直接判别落在窗口内的部分线段、大体上有以下几步,有些步骤依据中间的判断结果可以省略或跳转、第一步:计算出pk与qk(k=
4、1,2,3,4)第二步:瞧pki的符号进行判断第三步:计算u1=max(0,qk/pk),u2=min(1,qk/pk)如果,u2u1,则线段就是可见的第四步:利用u1与u2计算端点坐标(3)比较:Cohen-Sutherland:直观方便,速度较快多次重复计算线段与裁剪窗口边界的交点,计算量大采用位逻辑乘,在有些高级语言中不便进行全部舍弃的判断仅适用于那些仅在窗口的线段,不适合跨越三个区域的线段,就不能一次做出判别Liang-Barsky:所需计算量小,更有效可以扩展成三维裁剪算法只能应用于矩阵窗口的情形10 .简述Bezier曲线与B-Spline曲线的异同点,指出她们的特点与不足。11
5、.DD脚法与Bresenham算法就是两种直线生成的基本算法,试述两种算法的基本原理,并分析它们的优点与不足。(1) DD期法:选定x2-x1与y2y1中较大者作为步进方向(假设x2-x1较大),取该方向上的增量为一个象素单位(xh),利用式(21)计算另一个方向的增量(=*m=m)通过递推公式(22)至(25),把每次计算出的(xi+1,yi+1)经取整后送到显示器输出,则得到扫描转换后的直线。之所以取x2x1与y2y1中较大者作为步进方向,就是考虑沿着线段分布的象素应均匀,这在下图中可瞧出。另外,算法实现中还应注意直线的生成方向,以决定Ax及Ay就是取正值还就是负值。(2) Bresenham算法:假定直线斜率k在01之间。此时,只需