《计算机图形学基础》模拟试题(二)答案一、问答题(25分,每题5分)1、列举三种常见的颜色模型,简要说明其原理和特点。答:所谓颜色模型就是指某个三维颜色空间中的一个可见光子集,它包含某个颜色域的所有颜色。常用的颜色模型有RGB、CMY、HSV等。RGB颜色模型通常用于彩色阴极射线管等彩色光栅图形显示设备中,它是我们使用最多、最熟悉的颜色模型。它采用三维直角坐标系,红、绿、蓝为原色,各个原色混合在一起可以产生复合色。CMY颜色模型以红、绿、蓝的补色青(Cyan)、品红(Magenta)、黄(Yellow)为原色构成,常用于从白光中滤去某种颜色,又被称为减性原色系统。印刷行业中基本使用CMY颜色模型。HSV(Hue,Saturation,Value)颜色模型是面向用户的,对应于画家的配色方法。2、列举三种以上常见的曲面、曲面求交方法。答:曲面与曲面求交的基本方法有代数方法、几何方法、离散方法和跟踪方法四种。代数方法:代数方法利用代数运算,特别是求解代数方程的方法求出曲面的交线。几何方法:几何方法是利用几何的理论,对参与求交的曲面的形状大小、相互位置以及方向等进行计算和判断,识别出交线的形状和类型,从而可精确求出交线。对于交线退化或者相切的情形,用几何方法求交可以更加迅速和可靠。离散方法:离散方法求交是利用分割的方法,将曲线不断离散成较小的曲面片,直到每一子曲面片均可用比较简单的面片,如四边形或者三角形平面片来逼近,然后用这些简单面片求交得到一系列交线段,连接这些交线段即得到精确交线的近似结果。跟踪方法:跟踪方法求交是通过先求出初始交点,然后从已知的初始交点出发,相继跟踪计算出下一交点,从而求出整条交线的方法。3、给出四次Bezier曲线退化为三次Bezier曲线,控制顶点Po,Pr,P2,P3,P应满足的条件。答:退化条件是将曲线展开成幂级数形式后,所有1的系数只和为零,即
《计算机图形学基础》模拟试题(二)答案 一、问答题 (25 分,每题 5 分) 1、 列举三种常见的颜色模型,简要说明其原理和特点。 答:所谓颜色模型就是指某个三维颜色空间中的一个可见光子集,它包含某个颜色域的所有 颜色。常用的颜色模型有 RGB、CMY、HSV 等。 RGB 颜色模型通常用于彩色阴极射线管等彩色光栅图形显示设备中,它是我们使用最 多、最熟悉的颜色模型。它采用三维直角坐标系,红、绿、蓝为原色,各个原色混合在一起 可以产生复合色。 CMY 颜色模型以红、绿、蓝的补色青(Cyan)、品红(Magenta)、黄(Yellow)为原色 构成,常用于从白光中滤去某种颜色,又被称为减性原色系统。印刷行业中基本使用 CMY 颜色模型。 HSV(Hue,Saturation,Value)颜色模型是面向用户的,对应于画家的配色方法。 2、 列举三种以上常见的曲面、曲面求交方法。 答:曲面与曲面求交的基本方法有代数方法、几何方法、离散方法和跟踪方法四种。 代数方法:代数方法利用代数运算,特别是求解代数方程的方法求出曲面的交线。 几何方法:几何方法是利用几何的理论,对参与求交的曲面的形状大小、相互位置以及 方向等进行计算和判断,识别出交线的形状和类型,从而可精确求出交线。对于交线退化或 者相切的情形,用几何方法求交可以更加迅速和可靠。 离散方法:离散方法求交是利用分割的方法,将曲线不断离散成较小的曲面片,直到每 一子曲面片均可用比较简单的面片,如四边形或者三角形平面片来逼近,然后用这些简单面 片求交得到一系列交线段,连接这些交线段即得到精确交线的近似结果。 跟踪方法:跟踪方法求交是通过先求出初始交点,然后从已知的初始交点出发,相继跟 踪计算出下一交点,从而求出整条交线的方法。 3、 给出四次 Bezier 曲线退化为三次 Bezier 曲线,控制顶点 0 1 2 3 4 P ,P ,P ,P ,P 应满足的条件。 答 : 退化条件是将曲线展开成幂级数形式后,所有 4 t 的系数只和为零,即
Z4P=0ZPC(-I)- =0i=0i=0或4、列举三种形体表示的常见方法。答:分解表示、构造表示和边界表示。5、计算机图形学的概念是谁在其博士论文中提出的?答:IvanE.Sutherland。二、选择题(25分,每题5分)的名字命名的。6、ACMSiggraph最高奖是以a.Ivan E.Sutherlandb.PierreBezied. Bui-Tuong Phongc.StevenA.Coons7、中点法扫描转换以(0,0),(5,2)为端点的直线段时,不经过下面哪个点c?a. (1,0)b. (2,1)c. (3,2)d. (4,2)8、五个控制顶点的三次B样条的节点向量应该由几个节点构成d?a.5b.7d. 9c. 89、多项式Bezier曲线不能表示哪种几何元素bc?a.直线b.圆弧c.双曲线d.抛物线10、属于空间剖分技术的光线跟踪加速方法有:aca.三维DDAc.八叉树b.层次包围盒d.自适应深度控制1 21,反求插值三(10分)、给定型值点(0,0)(0,100),(100,0),(100,100),如对应的参数为0,3'3这四个型值点的三次Bezier曲线的控制点。1 2答:假设控制顶点为bo,br,bz,b,,由Bezier曲线的公式,将参数为0,1代入曲线方程,3'3即有:b =(0,0),b, =(100,100)
4 i 0 0 i P 0 或 4 i 0 i 4 i PiC4 ( 1) 0 4、 列举三种形体表示的常见方法。 答:分解表示、构造表示和边界表示。 5、 计算机图形学的概念是谁在其博士论文中提出的? 答:Ivan E. Sutherland。 二、选择题 (25 分,每题 5 分) 6、ACM Siggraph 最高奖是以 c 的名字命名的。 a. Ivan E. Sutherland b. Pierre Bézie c. Steven A. Coons d. Bui-Tuong Phong 7、中点法扫描转换以(0,0), (5,2)为端点的直线段时,不经过下面哪个点 c ? a. (1,0) b. (2,1) c. (3,2) d. (4,2) 8、五个控制顶点的三次 B 样条的节点向量应该由几个节点构成 d ? a. 5 b. 7 c. 8 d. 9 9、多项式 Bezier 曲线不能表示哪种几何元素 b c ? a. 直线 b. 圆弧 c. 双曲线 d. 抛物线 10、属于空间剖分技术的光线跟踪加速方法有: a c a. 三维 DDA b. 层次包围盒 c. 八叉树 d. 自适应深度控制 三 (10 分)、给定型值点(0,0),(0,100),(100,0),(100,100),如对应的参数为 ,1 3 2 , 3 1 0, ,反求插值 这四个型值点的三次 Bezier 曲线的控制点。 答:假设控制顶点为 0 1 2 3 b ,b ,b ,b ,由 Bezier 曲线的公式,将参数为 ,1 3 2 , 3 1 0, 代入曲线方程, 即有: (0,0) b0 , (100,100) b3
2841b(0,100)bo+=bi+=b29279272b*481b(100.0)b+Lha+二2799273501000650700),b2解方程组可得b,=(32S33四(10分)、描述Cohen-Sutherland裁剪算法。答:该算法的思想是:对于每条线段PP2分为三种情况处理。(1)若PP完全在窗口内,则显示该线段PP2简称“取”之。(2)若PP,明显在窗口外,则丢弃该线段,简称“弃”之。(3)若线段既不满足“取”的条件,也不满足“弃”的条件,则在交点处把线段分为两段。其中一段完全在窗口外,可弃之。然后对另一段重复上述处理。为使计算机能够快速判断一条直线段与窗口属何种关系,采用如下编码方法。如下图,延长窗口的边,将二维平面分成九个区域。每个区域赋予4位编码CtCbCrCl.其中各位编码的定义如下:(1[1[1 x>Xmax[1y>ymaxy<yminx>XminC,C,=C, =C,=lo1010otherother10otherother裁剪一条线段时,先求出P,P2所在的区号codel,code2。若codel=0,且code2=0,则线段P,P2在窗口内,应取之。若按位与运算codel&code2≠0,则说明两个端点同在窗口的上100110101000000100000010P3 P4010101100100P2方、下方、左方或右方。可判断线段完全在窗口外,可弃之。否则,按第三种情况处理。求出线段与窗口某边的交点,在交点处把线段一分为二,其中必有一段在窗口外,可弃之。在对另一段重复上述处理。在实现本算法时,不必把线段与每条窗口边界依次求交,只要按顺序检测到端点的编码不为0,才把线段与对应的窗口边界求交。五(10分)、(1)推导Beizer曲线的升阶公式。(2)给定三次Beizer曲线的控制项点(0,0),(0,100),(100,0),(100,100),计算升阶一次后的控制顶点。解:
0 1 2 3 0 1 2 3 27 8 9 4 9 2 27 1 (100,0) 27 1 9 2 9 4 27 8 (0,100) b b b b b b b b 解方程组可得 ) 3 700 , 3 650 ), ( 3 1000 , 3 350 ( b1 b2 。 四 (10 分)、描述 Cohen-Sutherland 裁剪算法。 答:该算法的思想是:对于每条线段 P1P2分为三种情况处理。(1)若 P1P2完全在窗口内, 则显示该线段 P1P2简称“取”之。(2)若 P1P2明显在窗口外,则丢弃该线段,简称“弃” 之。(3)若线段既不满足“取”的条件,也不满足“弃”的条件,则在交点处把线段分为两 段。其中一段完全在窗口外,可弃之。然后对另一段重复上述处理。 为使计算机能够快速判断一条直线段与窗口属何种关系,采用如下编码方法。如下图, 延长窗口的边,将二维平面分成九个区域。每个区域赋予 4 位编码 CtCbCrCl.其中各位编码 的定义如下: other x x C other x x C other y y C other y y Ct b r l 0 1 0 1 0 1 0 1 max min max min 裁剪一条线段时,先求出 P1P2所在的区号 code1,code2。若 code1=0,且 code2=0,则线 段 P1P2在窗口内,应取之。若按位与运算 code1&code2≠0,则说明两个端点同在窗口的上 方、下方、左方或右方。可判断线段完全在窗口外,可弃之。否则,按第三种情况处理。 求出线段与窗口某边的交点,在交点处把线段一分为二,其中必有一段在窗口外,可弃之。 在对另一段重复上述处理。在实现本算法时,不必把线段与每条窗口边界依次求交,只要 按顺序检测到端点的编码不为 0,才把线段与对应的窗口边界求交。 五 (10 分)、 (1) 推导 Beizer 曲线的升阶公式。 (2) 给定三次 Beizer 曲线的控制顶点(0,0),(0,100),(100,0),(100,100),计算升阶 一次后的控制顶点。 解: 1001 1000 1010 0001 0000 0010 0101 0100 0110 P1 P2 P3 P4
设给定原始控制顶点Po,P,..,P,定义了一条n次Bezier曲线P(I)=PB.,(1) te[0,]1=0增加一个顶点后,仍定义同一条曲线的新控制顶点为PP.P,则有:n+cra-n-ZchP,t(1-1)"-iso对上式左边乘以(t+(1-t),得到:2cP(1-)+*(-))=Ec-P*(1--i=0比较等式两边t'(1-t)"+I-i项的系数,得到:P'Ch = P,C, + P.-IC,-化简即得:P-P-(-(i =- 0,],,n+ 1)n+l其中P,= Pn+1=0。升阶一次后的控制顶点为(0.0),(0,75),(50,50),(100,25),(100,100)。六(10分)、用deBoor算法,求以(30,0),(60,10),(80,30),(90,60),(90,90)为控制项点、以T=(0,0,0,00.5,1,1,1,1)为节点向量的的三次B样条曲线在t=1/4处的值。-pl(t)Nk-(0) ,P(t) =ZPN,(1) =解:由deBoor算法,i=j-k+2i=j-k+1按公式:有以下的deBoor三角形:
设给定原始控制顶点 P P Pn , , , 0 1 ,定义了一条 n 次 Bezier 曲线: ( ) ( ) [0,1] 0 , P t PB t t n i i i n 增加一个顶点后,仍定义同一条曲线的新控制顶点为 * 1 * 1 * 0 , , , P P Pn ,则有: n i n i i n i i i n i n i i i n C Pt t C P t t 0 1 0 * 1 (1 ) (1 ) 对上式左边乘以 (t (1 t)) ,得到: i n i i i n n i i n i i n i i i n C Pt t t t C P t t * 1 1 0 1 1 (1 ) (1 ) ) (1 ) 比较等式两边 i n i t t 1 (1 ) 项的系数,得到: 1 1 1 * j n n i i n i Pi Cn PC P C 化简即得: ( 0,1, , 1) 1 1 1 1 * P i n n i P n i Pi i i 其中 P1 Pn1 0。 升阶一次后的控制顶点为(0,0),(0,75),(50,50),(100,25),(100,100)。 六(10 分)、用 de Boor 算法,求以(30,0),(60,10),(80,30),(90,60),(90,90)为控制顶点、以 T=(0,0,0,0,0.5,1,1,1,1)为节点向量的的三次 B 样条曲线在 t=1/4 处的值。 解:由 de Boor 算法, P t PN t P t N t i i k i j k j i i k i j k j ( ) ( ) ( ) ( ) , [ ] , 1 1 1 2 , 按公式: 有以下的 de Boor 三角形:
(30,0)(60,10)(45,5)(80,30)(65,15)(55,10)↓→Y(90,60)→(82.5,37.5)(69.375,20.625)(62.1875,15.3125)→(90,90)即B样条曲线在t=1/4处的值为(62.1875,15.3125)七(10分)、描述多边形扫描转换的扫描线算法。答:算法的思想:扫描线多边形扫描转换算法是按扫描线顺序,计算扫描线与多边形的相交区间,再用要求的颜色显示这些区间的象素,即完成填充工作。区间的端点可以通过计算扫描线与多边形边界线的交点获得。对于一条扫描线,多边形的填充过程可以分为四个步骤:(1)求交:计算扫描线与多边形各边的交点;(2)排序:把所有交点按x值递增顺序排序:(3)配对:第一个与第二个,第三个与第四个等等:每对交点代表扫描线与多边形的一个相交区间,(4)填色:把相交区间内的象素置成多边形颜色,把相交区间外的象素置成背景色。但求交会导致算法效率低,为了能很好地利用图形地连贯性,我们可以引进多边形表、活性边表等数据结构,并利用增量算法避免求交运算。具体算法如下:算法过程void polyfill (POLYGON polygon, int color)1for(各条扫描线i)1初始化新边表头指针NET[i];把ymin=i的边放进边表NET[];3y=最低扫描线号;初始化活性边表AET为空:for(各条扫描线i)1把新边表NETi中的边结点用插入排序法插入AET表,使之按x坐标递增顺
(90,90) (90,60) (82.5,37.5) (69.375,20.625) (62.1875,15.3125) (80,30) (65,15) (55,10) (60,10) (45,5) (30,0) 即 B 样条曲线在 t = 1/4 处的值为(62.1875,15.3125) 七 (10 分)、描述多边形扫描转换的扫描线算法。 答:算法的思想: 扫描线多边形扫描转换算法是按扫描线顺序,计算扫描线与多边形的相交区间, 再用要求的颜色显示这些区间的象素,即完成填充工作。区间的端点可以通过计算扫描 线与多边形边界线的交点获得。对于一条扫描线,多边形的填充过程可以分为四个步骤: (1)求交:计算扫描线与多边形各边的交点; (2)排序:把所有交点按 x 值递增顺序排序; (3)配对:第一个与第二个,第三个与第四个等等;每对交点代表扫描线与多边 形的一个相交区间, (4)填色:把相交区间内的象素置成多边形颜色,把相交区间外的象素置成背景 色。 但求交会导致算法效率低,为了能很好地利用图形地连贯性,我们可以引进多边形表、 活性边表等数据结构,并利用增量算法避免求交运算。具体算法如下: 算法过程 void polyfill (POLYGON polygon, int color) { for(各条扫描线 i ) { 初始化新边表头指针 NET [i]; 把 ymin = i 的边放进边表 NET [i]; } y = 最低扫描线号; 初始化活性边表 AET 为空; for (各条扫描线 i) { 把新边表 NET[i]中的边结点用插入排序法插入 AET 表,使之按 x 坐标递增顺