《计算机图形学基础》模拟试题(二)答案一、问答题(25分,每题5分)1、列举三种常见的颜色模型,简要说明其原理和特点。答:所谓颜色模型就是指某个三维颜色空间中的一个可见光子集,它包含某个颜色域的所有颜色。常用的颜色模型有RGB、CMY、HSV等。RGB颜色模型通常用于彩色阴极射线管等彩色光栅图形显示设备中,它是我们使用最多、最熟悉的颜色模型。它采用三维直角坐标系,红、绿、蓝为原色,各个原色混合在一起可以产生复合色。CMY颜色模型以红、绿、蓝的补色青(Cyan)、品红(Magenta)、黄(Yellow)为原色构成,常用于从白光中滤去某种颜色,又被称为减性原色系统。印刷行业中基本使用CMY颜色模型。HSV(Hue,Saturation,Value)颜色模型是面向用户的,对应于画家的配色方法。2、列举三种以上常见的曲面、曲面求交方法。答:曲面与曲面求交的基本方法有代数方法、几何方法、离散方法和跟踪方法四种。代数方法:代数方法利用代数运算,特别是求解代数方程的方法求出曲面的交线。几何方法:几何方法是利用几何的理论,对参与求交的曲面的形状大小、相互位置以及方向等进行计算和判断,识别出交线的形状和类型,从而可精确求出交线。对于交线退化或者相切的情形,用几何方法求交可以更加迅速和可靠。离散方法:离散方法求交是利用分割的方法,将曲线不断离散成较小的曲面片,直到每一子曲面片均可用比较简单的面片,如四边形或者三角形平面片来逼近,然后用这些简单面片求交得到一系列交线段,连接这些交线段即得到精确交线的近似结果。跟踪方法:跟踪方法求交是通过先求出初始交点,然后从已知的初始交点出发,相继跟踪计算出下一交点,从而求出整条交线的方法。3、给出四次Bezier曲线退化为三次Bezier曲线,控制顶点43210,,,,PPPPP应满足的条件。答:退化条件是将曲线展开成幂级数形式后,所有4t的系数只和为零,即40i0i0P或40ii4i4i01CP)(4、列举三种形体表示的常见方法。答:分解表示、构造表示和边界表示。5、计算机图形学的概念是谁在其博士论文中提出的?答:IvanE.Sutherland。二、选择题(25分,每题5分)6、ACMSiggraph最高奖是以c的名字命名的。a.IvanE.Sutherlandb.PierreBéziec.StevenA.Coonsd.Bui-TuongPhong7、中点法扫描转换以(0,0),(5,2)为端点的直线段时,不经过下面哪个点c?a.(1,0)b.(2,1)c.(3,2)d.(4,2)8、五个控制顶点的三次B样条的节点向量应该由几个节点构成d?a.5b.7c.8d.99、多项式Bezier曲线不能表示哪种几何元素bc?a.直线b.圆弧c.双曲线d.抛物线10、属于空间剖分技术的光线跟踪加速方法有:aca.三维DDAb.层次包围盒c.八叉树d.自适应深度控制三(10分)、给定型值点(0,0),(0,100),(100,0),(100,100),如对应的参数为1,32,31,0,反求插值这四个型值点的三次Bezier曲线的控制点。答:假设控制顶点为3210,,,bbbb,由Bezier曲线的公式,将参数为1,32,31,0代入曲线方程,即有:)0,0(0b,)100,100(3b,321032102789492271)0,100(2719294278)100,0(bbbbbbbb解方程组可得)3700,3650(),31000,3350(21bb。四(10分)、描述Cohen-Sutherland裁剪算法。答:该算法的思想是:对于每条线段P1P2分为三种情况处理。(1)若P1P2完全在窗口内,则显示该线段P1P2简称“取”之。(2)若P1P2明显在窗口外,则丢弃该线段,简称“弃”之。(3)若线段既不满足“取”的条件,也不满足“弃”的条件,则在交点处把线段分为两段。其中一段完全在窗口外,可弃之。然后对另一段重复上述处理。为使计算机能够快速判断一条直线段与窗口属何种关系,采用如下编码方法。如下图,延长窗口的边,将二维平面分成九个区域。每个区域赋予4位编码CtCbCrCl.其中各位编码的定义如下:otherxxCotherxxCotheryyCotheryyClrbt01010101minmaxminmax裁剪一条线段时,先求出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),计算升阶一次后的控制顶点。解:100110001010000100000010010101000110P1P2P3P4设给定原始控制顶点nPPP,,,10,定义了一条n次Bezier曲线:]1,0[)()(0,ttBPtPninii增加一个顶点后,仍定义同一条曲线的新控制顶点为*1*1*0,,,nPPP,则有:niniiniiininiiinttPCttPC010*1)1()1(对上式左边乘以))1((tt,得到:iniiinniiniiniiinttPCttttPC1*1011)1())1()1(比较等式两边initt1)1(项的系数,得到:111*jnniniiniCPCPCP化简即得:)1,,1,0(1111*niPniPniPiii其中011nPP。升阶一次后的控制顶点为(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,0,0.5,1,1,1,1)为节点向量的的三次B样条曲线在t=1/4处的值。解:由deBoor算法,PtPNtPtNtiikijkjiikijkj()()()(),[],1112,按公式:有以下的deBoor三角形:)90,90()3125.15,1875.62()625.20,375.69()5.37,5.82()60,90()10,55()15,65()30,80()5,45()10,60()0,30(即B样条曲线在t=1/4处的值为(62.1875,15.3125)七(10分)、描述多边形扫描转换的扫描线算法。答:算法的思想:扫描线多边形扫描转换算法是按扫描线顺序,计算扫描线与多边形的相交区间,再用要求的颜色显示这些区间的象素,即完成填充工作。区间的端点可以通过计算扫描线与多边形边界线的交点获得。对于一条扫描线,多边形的填充过程可以分为四个步骤:(1)求交:计算扫描线与多边形各边的交点;(2)排序:把所有交点按x值递增顺序排序;(3)配对:第一个与第二个,第三个与第四个等等;每对交点代表扫描线与多边形的一个相交区间,(4)填色:把相交区间内的象素置成多边形颜色,把相交区间外的象素置成背景色。但求交会导致算法效率低,为了能很好地利用图形地连贯性,我们可以引进多边形表、活性边表等数据结构,并利用增量算法避免求交运算。具体算法如下:算法过程voidpolyfill(POLYGONpolygon,intcolor){for(各条扫描线i){初始化新边表头指针NET[i];把ymin=i的边放进边表NET[i];}y=最低扫描线号;初始化活性边表AET为空;for(各条扫描线i){把新边表NET[i]中的边结点用插入排序法插入AET表,使之按x坐标递增顺序排列;遍历AET表,把配对交点区间(左闭右开)上的象素(x,y),用drawpixel(x,y,color)改写象素颜色值;遍历AET表,把ymax=i的结点从AET表中删除,并把ymaxi结点的x值递增Dx;若允许多边形的边自相交,则用冒泡排序法对AET表重新排序;}}/*polyfill*/