《计算机图形学》练习题一、选择题1.计算机图形显示器一般使用什么颜色模型(A)A、RGB;B、CMY;C、HSV;D、HLS2.多边形填充时,下述哪个论述是错误的?(C)A.多边形被两条扫描线分割成许多梯形,梯形的底边在扫描线上,腰在多边形的边上,并且相间排列;B.多边形与某扫描线相交得到偶数个交点,这些交点间构成的线段分别在多边形内、外,并且相间排列;C.在判断点是否在多边形内时,一般通过在多边形外找一点,然后根据该线段与多边形的交点数目为偶数即可认为在多边形内部,若为奇数则在多边形外部,而且不需考虑任何特殊情况;D.边的连贯性告诉我们,多边形的某条边与当前扫描线相交时,很可能与下一条扫描线相交;3、扫描线多边形填充算法中,对于扫描线同各边的交点的处理具有特殊性。穿过某两条边的共享顶点的扫描线与这两条边的交点数只能计为(B)交点:A、0个B、1个C、2个D、3个4、下列不属于计算机图形软件国际标准的是(C)A、GKSB、PHIGSC、国标码D、IGES5、种子填充算法中,正确的叙述是(D)。A、它是按扫描线的顺序进行象素点的填充B、四连接算法可以填充八连接区域C、八连接算法不能填充四连通区域D、四连接区域内的每一象素可以通过上下左右四个方向组合到达6、以下设备中,哪一个不属于图形输入设备?(C)A、数字化仪B、光笔C、绘图仪D、游戏杆7、光笔是一种(B)设备。A、输出B、输入C、输入输出D、非输入也非输出8、下列图片中输出线段SP与剪裁线的交点I的是(C)(A)(B)(C)(D)9、计算机图形学与计算机图象学的关系是(B)。A、计算机图形学是基础,计算机图象学是其发展B、不同的学科,研究对象和数学基础都不同,但它们之间也有可转换部分C、同一学科在不同场合的不同称呼而已D、完全不同的学科,两者毫不相干10、触摸屏是(C)设备。A、输入B、输出C、输入输出D、既不是输入也不是输出11、分辨率为1024×1024的显示器需要多少字节位平面数为16的帧缓存?(C)A、512KBB、1MBC、2MBD、3MB12、填充技术要解决的问题是如何(A)A.确定填充的位置及高效的填充。B.确定填充的位置及正确的填充C.正确的填充及高效的填充D.高效的填充二、填空题1、计算机图形学是研究如何用计算机将数据转化为图形,并在图形显示器上显示出来的原理、方法和技术的学科2、屏幕上最小的发光单元叫做象素点,它的多少叫做分辨率3、生成直线常用的算法主要有数值微分法、中点画线法、Bresenham画线算法。4、作为一个图形系统,至少应具有计算、存储、输入、输出、对话等五个方面的基本功能。5、汉字字库一般可分为矢量字库和点阵字库两种。6、在线段AB的区域编码裁剪算法中,如A、B两点的码均为零,则该线段位于窗口内;如A、B两点的码按位与不为零,则该线段在窗口外。7、计算机图形学中的图形是指可以用数学方法描述的并且需要在计算机上显示图形。8、一个完整的计算机图形系统由图形软件系统和图形硬件系统组成。图形设备用于图形输入和输出,可分为图形输入设备、图形显示设备和图形绘制设备。9、计算机图形学着重讨论怎样将数据和几何模型变成图形;图象处理重点在于图像的压缩存储以及去噪声问题;模式识别则讨论怎样从图像中提取数据和模型。10、、计算机图形系统由硬件系统和软件系统组成。11、颜色的三原色为:红(Red)、绿(Green)、蓝(Blue)。12、在计算机图形学中,被裁剪的对象可以是线段、多边形和字符。13、CRT由电子枪、聚焦系统、偏转系统、荧光屏组成。三、名次解释/简答题1、计算机图形学的应用领域有哪些?答:(1)图形用户界面(2)计算机辅助设计与制造(3)事务和商务数据的图形展示(4)绘制勘探、测量图形(5)过程控制及系统环境模拟(6)电子印刷及办公室自动化。(7)计算机动画和艺术(8)科学计算的可视化(9)工业模拟(10)计算机辅助教学。2、图象处理答:是景物或图象的分析技术,它所研究的是计算机图形学的逆过程。包括图象增强、模式识别、景物分析、计算机视觉等,并研究如何从图象中提取二维或三维物体的模型。3、多边形填充扫描线算法包括哪些计算步骤?答:对于一个给定的多边形,用一组水平(垂直)的扫描线进行扫描,求出每条扫描线与多边形边的交点,这些交点将扫描线分割为相间排列的落在多边形内和外的线段,将落在多边形内的线段上的所有象素点赋以给定的多边形的颜色值。计算过程如下:(1)求交:计算扫描线与多边形各边的交点;(2)排序:把所有交点按递增顺序进行排序;(3)交点配对:每对交点表示扫描线与多边形的一个相交区间;(4)区间填色:相交区间内的象素置成多边形颜色,相交区间外的象素置成背景色。4、简要描述计算机图形系统与计算机图像系统的区别。答:计算机图形是指计算机产生的图形,它的实质就是将输入的数据信息,经计算机图形系统处理以后输出图形结果。计算机图像又称数字图像,计算机图像处理系统与计算机图形系统的工作方式完全不同,图像处理系统的输入信息是图像,经处理后的输出仍然是图像。5、在图形设备上如何输出一个点?为输出一条任意斜率的直线,一般受到哪些因素影响?若图形设备是光栅图形显示器,光栅图形显示器可以看作是一个像素的矩阵,光栅图形显示器上的点是像素点的集合。在光栅图形显示器上输出一条任意斜率的直线,主要受到以下因素的影响:(1)光栅图形显示器的分辨率;(2)线宽、线型;(3)直线的扫描转换的算法。6、简述随机扫描显示器、存储管式显示器和光栅扫描式图形显示器的工作特点。答:随机扫描显示器中电子束的定位和偏转具有随机性,即电子束的扫描轨迹随显示内容而变化,只在需要的地方扫描,而不必全屏扫描。存储管式显示器从表面上看极象一个有长余辉的荧光屏,一条线一旦画在屏幕上,在很长时间之内都将是可见的,常用于显示大量而复杂稳定的图形。在光栅扫描式图形显示器中,电子束横向扫描屏幕,一次一行,从顶到底顺次进行。当电子束横向沿每一行移动时,电子束的强度不断变化来建立亮点的图案。7.什么是中点分割裁剪法?答:中点分割裁剪法又称对分裁剪法,该方法用于代替求交运算。如图所示,AB为线段P1P2的可见部分。记P1和P2的中点为Pm。从P1出发求A,如果P1Pm部分可见部分不可见,则A点在该线段上,用该线段代替P1P2继续求解;否则,用PmP2代替P1P2继续求解。求解过程直到P1P2的长度小于预先给定的一个常数时结束,这时,P2为离A最近的可见点。类似地可以求解B。8.二维编码裁剪法如何对线段的端点进行编码?答:将用户域用为9个区域,每个区域都有相应的编码,当线段的端点落在某个区域内时,对该端点进行相应的编码。从高位开始,每位编码如下:(1)第1位,端点在y=ymax上方则取1,否则取0;(2)第2位,端点在y=ymin下方则取1,否则取0;(3)第3位,端点在x=xmax右方则取1,否则取0;(4)第4位,端点在x=xmin左方则取1,否则取0。如果线段两端点的4位编码全为零,则线段全部在窗口内;如果两端点的4位编码按位进行与运算,结果为非零,则此线段全部在窗口之外;其他情况下,线段部分在窗口内,部分在窗口外。编码裁剪法的编码用于判断线段与窗口的关系。四、程序填空题1、DDA直线扫描转换算法(P166):DDAline(x0,y0,x1,y1,color)x0,y0,x1,y1,color;{intx;floatdx,dy,k,y;dx=x1-x0;dy=y1-y0;k=dy/dx;y=y0;for(x=x0;x=x1;x++){putpixel(x,int(y+0.5),color);y=y+k;}}2、中点画线法(P168)voidMidpointLine(intx0,inty0,intx1,inty1,intcolor){inta,b,d1,d2,d,x,y;a=y0-y1,b=x1-x0,d=2*a+b;d1=2*a;d2=2*(a+b);x=x0,y=y0;drawpixel(x,y,color);while(xx1){if(d0){x++;y++;d+=d2;}else{x++;d+=d1;}drawpixel(x,y,color);}/*while*/}/*midPointLine*/中点画线法扫描转换直线段实例:用中点画线法P0(0,0),P1(5,2)a=y0-y1=-2,b=x1-x0=5,d0=2a+b=1,d1=2a=-4,d2=2(a+b)=6(1)当d0时,d=d+d2;x=x+1;y=y+1;(2)当d=0时,d=d+d1;x=x+1;y=y;xyd00110-321331-14255213、Bresenham画线算法扫描转换直线段(P169)voidBresenhamline(intx0,inty0,intx1,inty1,intcolor){intx,y,dx,dy;floatk,e;dx=x1-x0,dy=y1-y0,k=dy/dx;e=-0.5,x=x0,y=y0;for(i=0;i=dx;i++){putpixel(x,y,color);x=x+1,e=e+k;if(e0){y++,e=e-1;}}}Bresenham画线算法扫描转换直线段实例:例:Line:P0(0,0),P1(5,2)k=dy/dx=0.4d0=0,d=d+k(当d=1时,再d=d-1),e=d-0.5;(1)当e=0时,x=x+1;y=y+1;(2)当e0时,x=x+1;y=y;xyde000-0.5100.4-0.1210.80.3310.2-0.3420.60.1520.0-0.54.中点画圆算法的程序(P172):voidMidpointCircle(intr,intcolor){intx=0,y=r;d=1.25-r;floatd;drawpixel(x,y,color);while(xy){if(d0){d+=2*x+3;x++;}else{d+=2*(x-y)+5;x++;y――;}drawpixel(x,y,color);}/*while*/}/*MidpointCircle*/