2008级计算机图形学试卷A参考答案一、概念每题3分共15分扫描转换:将图形描述转换成用像素矩阵表示的过程3分计算几何学:研究几何模型和数据处理的学科3分视见变换:将用户坐标系窗口内的图形变换到显示屏幕设备坐标系的视见区中以产生显示3分齐次坐标:用n+1维向量表示一个n维向量3分种子:事先给定的用于实施填充的区域内部像素3分二简述每题5分共25分1计算机图形的标准是指图形系统及其相关应用系统中各界面之间进行数据传送和通信的接口标准2分,以及供图形应用程序调用的子程序功能及其格式标准2分,前者为数据及文件格式标准,后者为子程序界面标准1分。2第一,用数学方法建立所构造三维场景的几何描述,并将它们输入至计算机。1分第二,将三维几何描述转换为二维透视图。这可通过对场景的透视变换来完成。1分第三,确定场景中的所有可见面,这需要使用隐藏面消除算法将被其它物体遮挡的不可见面消去。1分第四,计算场景中可见面的颜色,就是基于光学物理的光照明模型进行光亮度大小并转换成适合图形设备的颜色值,从而确定投影画面上每一象素的颜色。2分35分4形体在计算机中用上述几何元素按六个层次表示点→边→环→面→外壳→形体。5分5Bézier曲线的一些重要性质。(1)P(0)=P0,P(1)=Pn,曲线通过所给型值点序列的起点和终点1分(2)切向量)()1('),()0('101nnnnPPPPPP1分(3)对称性1分(4)凸包性1分(5)几何不变性1分三、计算共30分1、已知窗口由左下角点(-2,-5)与右上角点(14,10)构成,视区由左下角点(1,1)与右上角点(9,7)构成,试求窗口中点(0,0)在视区中的坐标。解:根据二维视见变换公式:vxlvxhvxlxwxlwxhwxlxvylvyhvylywylwyhwyly2分7,9,1,1,10,14,5,2,0vyhvxhvylvxlwyhwxhwylwxlyx1分可得即窗口中点(0,0)在视区中的坐标为(2,3)2、分别计算完成如下空间图形变换的变换矩阵A图形中的点(1,0,1)保持不动,X方向扩大3倍,Y方向扩大2倍,Z方向不变的坐标变换矩阵。解:3,2yx10020100002000031101010000100001100001000020000311010100001000012)1,0,1()1,2,3()1,0,1(分TSTM3分B设有一个斜交投影,投影面为Z=0,点P(0,0,1)的投影点为P(1,1,0),求此斜交投影的变换矩阵。解:根据题意,可得投影方向为)1,1,1(pp1分1111zyyzxx2分则斜交投影的变换矩阵为:1000001100100001M2分3、设有控制顶点0P(0,0,1),1P(4,6,1),2P(8,6,1),3P(12,0,1)确定的三次Bézier曲线P(t),试求出P(t)=(x(t),y(t),z(t))的多项式表示。解:三次Bézier曲线10),()(3,30ttBptPiii2分10,1)(1812)()()()(2tttttztytxtP3分4已给出两个型值点1P(19,10),2P(21,2),试确定另两个型值点1Q,2Q,使得1Q,2Q,1P,2P,四点确定的一条三次均匀B样条曲线,能以点(8,7)为起点,以(7,-3)为终点处的切线向量。(5分)解:设三次均匀B样条曲线10),()()()()(4,324,214,124,01uuNPuNPuNQuNQuP2分则根据曲线的端点性质可得:)7,8()4(61)3,7()(2112122PQQQP2分解得:)8,7(),0,1(21QQ1分4、设空间有四个点(2,0,0),(0,2,0),(0,0,2)和(2,-2,2),求通过此四点的平面方程。(5分)解:设通过此四点的平面方程为:0DCzByAx1,4;13,2,1),()(2141jiijizzyyAjiiji1,4;13,2,1),()(2141jiijixxzzBjiiji1,4;13,2,1),()(2141jiijiyyxxCjiiji2分可得4CBA,8)(4111zyxD2分平面方程为2zyx1分四、编写算法1、消除隐藏面的区域分割算法(10分)voidquyufenge(Boxb,graphg)//b为区域g为图形(多边形集合){if(g与b分离){b显示背景色;算法结束;2分}elseif(b仅包含g的一个多边形或仅与g的一个多边形相交){b显示成背景色;对仅相交或仅包含的多边形进行扫描转换;2分}elseif(g中仅有一个多边形包围b且无相交包含的多边形){b显示成多边形颜色;2分}elseif(g中有多于一个的包围的、相交的或被包含的多边形且至少有一个包围的多边形在最前面){b显示成包围的最前面的多边形颜色;2分}else{将b分成b1,b2,b3,b4;quyufenge(b1,g);quyufenge(b2,g);quyufenge(b3,g);quyufenge(b4,g);}2分2、写出亮度插值明暗法(Gouraud)算法(10分)(1)计算各多边形表面的法向量。2分(2)计算各顶点的法向量。这里顶点的法向,指共享该顶点的所有多边形表面法向的平均值。3分(3)计算各顶点的亮度。2分(4)计算各多边形表面上任意点处的亮度值,实行对多边形表面的明暗处理。做法是先利用顶点的亮度值,在边上做线性插值,求得边上的亮度值。再用之在扫描线上做线性插值,从而求得多边形面内任意点处的亮度值。3分3、试用伪代码写出Cohen-Sutherland直线裁剪算法(10分)voidCohen_Sutherland(doublex0,y0,x2,y2){intc,c1,c2;doublex,y;makecode(x0,y0,c1);makecode(x2,y2,c2);1分while(c1!=0||c2!=0){if(c1&c2==0)return;c=c1;if(c==0)c=c2;if(c&1==1){y=y0+(y2-y0)*(x1-x0)/(x2-x0);x=x1;}1分elseif(c&2==1){y=y0+(y2-y0)*(xr-x0)/(x2-x0);x=xr;}1分elseif(c&4==1){x=x0+(x2-x0)*(yb-y0)/(y2-y0);y=yb;}1分elseif(c&8==1){x=x0+(x2-x0)*(yt-y0)/(y2-y0);y=yt;}1分if(c==c1){x0=x;y0=y;makecode(x,y,c1);}else{x2=x;y2=y;makecode(x,y,c2);}}showline(x0,y0,x2,y2);(显示可见线段)1分}voidmakecode(doublex,y;intc){c=0;if(xxl)c=1;1分elseif(xxr)c=2;1分if(yyb)c=c+4;1分elseif(yyt)c=c+8;1分}