计算机图形学试题B
2011/2012学年第一学期期末试题
一、选择题(每小题5分,共30分)
1. 2. 分辨率为1024×1024的显示器各需要多少字节位平面数为24的帧缓存?( ) A)512KB B) 1MB C) 2MB D)3MB 在直线的 Bresenham 算法中,若直线的斜率 |m|>1 ,且 y1 C) xi+1 = xi + 1 ;yi+1 = yi 或 yi+1 = yi ± 1 D) xi+1 = xi– 1 ;yi+1 = yi 或 yi+1 = yi ± 1 3. 下述用数值微分法(DDA)画斜率的绝对值小于1的直线的C语言子程序中()行有错? #define round(x) int(a+0.5) void drawLineWithDDA (int x1, int y1, int x2, int y2) { A) int x, y; B) float k = (float)(y2-y1)/(x2-x1); C) for(x=x1,y=y1;x<=x2;x++) { SetPixel(round(x),round(y)); D) y+=k; } } 4. 下述绕坐标原点逆时针方向旋转a角的坐标变换矩阵中()项是错误的? | A B 0 | | C D 0 | (注:坐标向量采用行向量方式。) | 0 0 1 | A) cos(a) B)-sin(a) C)-sin(a) D)cos(a) 5. 下列关于Bezier曲线的性质,()是错误的. A) 在起点和终点处的切线方向和控制多边形第一条边和最后一条边的方向一致; B) 曲线及其控制多边形在起点处有什么几何性质,在终点处也有什么性质; C) 在端点处的R阶导数,仅与R个相邻个控制顶点有关; D) 对于平面曲线而言,其与某直线的交点个数不多于该直线与控制多边形的交点个数; 6.使用下列二维图形变换矩阵,将产生变换的结果为() A) 图形放大2倍; 2 0 0 B) 图形放大2倍,同时沿X、Y坐标轴方向各移动1个绘图单位; T = 0 1 0 C) 沿X坐标轴方向各移动2个绘图单位; 1 1 1 D) 沿X坐标轴方向放大2倍,同时沿X、Y坐标轴方向各平移1个绘图单位。 二、简答与证明题(每题6分,共24分) 1.试证明n次Bezier曲线在起始点处切线落在P0P1连线方向上,终止点切线落在Pn-1Pn连线 方向上。 2.证明关于直线y=x的对称变换矩阵等价于相对x轴的对称变换加上逆时针旋转90度。 3.x???R?写出顺时针绘制?0,2??圆的中点Bresenham算法原理、判别式、误差项的初始值 及递推公式。 4.请写出C_S裁剪算法中对点(x ,y)进行编码的伪代码程序。函数原型为: int encode(int x,int y);//函数返回对点(x,y)的编码值。 对使用到的变量常量给予说明。 三、计算与作图题(前3小题每题10分,第4题16分,共46分) 1.已知直线的两个端点P1(20,10),P2(30,18),用DDA算法使该线段光栅化,请填写下表。并已知解得:步长dx = 10; dy = 8; steps = 10; x增量x_in= 1; y增量y_in = 0.8;(10分) step k0123456789 (x,y) (20,10)像素点(20,10) 2.求空间四面体A(2,0,0)B(2,2,0)C(0,2,0)D(2,2,2)关于点 P(2,-2,2)整体放大2倍的变换矩阵和变换后的空间四面体坐标。(10) 3.简述深度缓存算法(Z-Buffer)的原理及基本工作流程。(10分) 4.如下图所示三角形ABC,将其关于A点逆时针旋转900,写出其变换矩阵和变换后图形各点的规范化齐次坐标。(16分) yA(2,5)C(6,3)B(1,1)Ox 计算机图形学试题B 2011/2012学年第一学期期末试题 一、 选择题(每小题5分,共30分) DAABCD 二、简答与证明题(每题6分,共24分) 1. 试证明n次Bezier曲线在起始点处切线落在P0P1连线方向上,终止点切线落在Pn-1Pn连线方向上。 证明:?Bi?,n(t)?n(Bi?1,n?1(t)?Bi,n?1(t)) 且因为:P?(t)?n?Pi(Bi?1,n?1(t)?Bi,n?1(t))i?0n?n((P1?P0)B0,n?1(t)?(P2?P1)B1,n?1(t)???(Pn?Pn?1)Bn?1,n?1(t))?n?(Pi?Pi?1)Bi?1,n?1(t)i?1n所以,有:p?(0)?n(P1?P0)p?(1)?n(Pn?Pn?1) 故可知:n次Bezier曲线在起始点处切线落在P0P1连线方向上,终止点切线落在Pn-1Pn 连线方向上。 2.证明关于直线y=x的对称变换矩阵等价于相对x轴的对称变换加上逆时针旋转90度。 证明: 对于x轴的对称变逆时针旋转90度的变换T2 换T1 1 0 0 0 -1 0 0 0 1 因为T1×T2=T,所以等价。 3. 写出顺时针绘制 R??x??0,2???y=x的对称变换T 0 1 0 1 0 0 0 0 1 cos(-90)-sin(-90) 0 sin(-90) cos(-90) 0 0 0 1 圆的中点Bresenham算法原理、判别式、误差项的初始值 及递推公式。(10) 答:由于最大位移方向为X ,因此其基本原理为:每次X方向上走一步,而Y方向上或减1,或减0 构造判别式: 222 di = F(xm , ym) = F(xi+1,yi-0.5)=(xi+1)+(yi-0.5)-R 误差项的初始值:d0 22 d0=F(1,R-0.5)=1+(R-0.5)-R=1.25-R 递推公式: di <0下一点为(xi+1,yi) 222 di+1=F(xi+2,yi-0.5) = (xi+2)+(yi-0.5)-R 222 =(xi+1)+(yi-0.5)-R+2*xi+3=di+2*xi+3 di≥0 下一点坐标为(xi+1,yi-1) 222 di+1 = F(xi+2,yi-0.5)=(xi+2)+(yi-1.5)-R 222 =(xi+1)+(yi-0.5)-R+(2*xi+3)+(-2*yi+2) =di+2*(xi-yi)+5 4.请写出C_S裁剪算法中对点(x ,y)进行编码的伪代码程序。函数原型为: int encode(int x,int y);//函数返回对点(x,y )的编码值。 #define LEFT 1 #define RIGHT 2 #define BOTTOM 4 #define TOP 8 #define XL 150 #define XR 350 #define YB 150 #define YT 300 int encode (int x, int y) { int c=0; if (x 1.已知直线的两个端点P1(20,10),P2(30,18),用DDA算法使该线段光栅化。并已知解得:dx = 10; dy = 8; steps = 10; x_in= 1; y_in = 0.8;(10分) 解:(蓝色字体为解答答案) step k0123456789 (x,y) (20,10) (21,10.8) (22,11.6) (23,12.4) (24,13.2) (25,14) (26,14.8) (27,15.6) (28,16.4) (29,17.2) (30,18)像素点(20,10)(21,11)(22,12)(23,12)(24,13)(25,14)(26,15)(27,16)(28,16)(29,17)(30,18) 2.求空间四面体A(2,0,0)B(2,2,0)C(0,2,0)D(2,2,2)关于点 P(2,-2,2)整体放大2倍的变换矩阵和变换后的空间四面体坐标。(10) 解:关于点 P(2,-2,2)整体放大两倍, 变换矩阵:点 P(2,-2,2)平移至原点--比例变换放大两倍--反平移回点 P(2,-2,2)。 变换过程:空间四面体 ABCD 的规范化齐次坐标(x,y,z,1) * 4阶三维比例变换矩阵 空间四面体 ABCD 的齐次坐标(x',y',z',1/2)转换成规范化齐次坐标 顶点 x y z 1 A 2,2,-2,1 B 2,6,-2,1 C -2,6,-2,1 D 2,6, 2,1 由比例变换后规范化齐次坐标(x',y',z',1)可写出顶点坐标: A'(2,2,-2) B'(2,6,-2) C'(-2,6,-2) D'(2,6,2) 3.简述深度缓存算法(Z-Buffer)的原理及基本工作流程。(10分) 解:Z-buffer算法的原理:先将待处理的景物表面上的采样点变换到图像空间,即屏幕坐标系,计算其深度值,并根据采样点在屏幕上的投影位置,将其深度与已存储在Z缓存器中 相应像素处的原可见点的深度值进行比较。如果新的采样点的深度(Z值)大于原可见点的尝试表明新的采样点计划遮住了原来的可见点,则用该采样点处的颜色更新帧缓存器中相应像素的颜色,同时用其深度值更新Z缓存器中的深度值;否则不作更改。 基本工作流程: (1)初始化:把Z缓存中各(x,y)单元置为z的最小值,而帧缓存各(x,y)单元置为背景色。 (2)在把物体表面相应的多边形扫描转换成帧缓存中的信息时,对多边形内的每一采样点(x,y)进行以下几步处理: 1)计算采样点(x,y)的深度z(x,y); 2)如果z(x,y)大于z缓存中在百忙之中(x,y)处的值,则把z(x,y)存入Z缓存中的(x,y)处,再所多边形在z(x,y)处的颜色值存入帧缓存的(x,y)地址中。 4. 如下图所示三角形ABC,将其关于A点逆时针旋转900,写出其变换矩阵和变换后图形各点的规范化齐次坐标。(16分) yA(2,5)C(6,3)B(1,1)Ox ???cossin?44100???????sin?cos?变换矩阵:T??010???44???2?51???0?0???010?????100????731?? 变换后A点的齐次坐标: ?0???100??0???010?????251??1? ????010??? T??251???100??251? ????731?? 变换后B点的齐次坐标: ?010??? T??111???100??641? ????731?? 变换后C点的齐次坐标: ?010????491?T??631????100????731??