您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 其它文档 > 计算机图形学复习材料
1题型•简答题(20%左右)•填空题(30%左右)•计算题(30%左右)•算法描述题(20%左右)第一章计算机图形学概述1.图形学、图形定义计算机图形学(ComputerGraphics,CG)是一门研究如何利用计算机表示、生成、显示和处理图形的学科。图形通常由点、线、面、体等几何属性和颜色、纹理、线型、线宽等非几何属性组成。2.图形分类从生成技术上来看,图形主要分为两类:一类是基于线条信息表示的,如工程图、等高线地图、曲面的线框图等;另一类是真实感图形。3.图形与图像之间的关系图形与图象是密切相关但又不同的两个概念。图象纯指计算机内以位图(Bitmap)形式存在的亮度和颜色信息;图形则由场景的几何模型和物理属性共同描述。4.计算机图形学的应用领域(6个)影视;游戏;工业设计;科学研究;艺术;医学;广告;教育;培训;军事等5.OPENGL简介OpenGL是SGI公司开发的一个跨平台的开放式图形编程工具。OpenGL集成了所有造型、变换、材质、纹理、光照、绘制等复杂的计算机图形学算法,将用户从具体的硬件和操作系统中解放了出来。了解:OpenGL本身是一个底层库,在编程实践中还需要一些能简化编程任务、易于在窗口系统上执行的高层库。•OpenGL核心函数:OpenGL核心函数以gl开头,可以运行于任何的OpenGL工作平台。•OpenGL实用库函数:实用库函数带有前缀glu,是基于OpenGL核心函数而比其更高一层的函数。它们也可以运行于任何OpenGL平台。•辅助库函数:它支持的平台较少,并不适合正式产品的开发。•Windows专用函数:以wgl开头,用于连接OpenGL和Windows窗口系统。•Win32API函数,用于处理像素格式及缓冲:共6个Win32API函数,用于处理像素格式及缓冲。要在Windows下使用实用工具库GLUT中的函数进行编程,需要另外下载glut32.dll、glut32.lib以及glut.h三个文件分别放入系统的相应目录。6.光栅扫描的显示系统和随机扫描的显示系统的特点光栅扫描的显示系统:按照从上到下然后再跳回顶部的顺序逐行扫描。随机扫描的显示系统特点:电子束可随意移动,只扫描屏幕上要显示的部分。7.帧缓冲存储器用来存储像素颜色(灰度)值的存储器就称为帧缓冲存储器。简称帧缓冲器(显存)。帧缓存中单元数目与显示器上像素的数目相同,单元与像素一一对应,各单元的数值决定了其对应像素的颜色。显示颜色的种类与帧缓存中每个单元的位数有关第二章计算机图形系统概述1.叙述计算机图形系统的基本功能。他的基本功能是帮助人们设计、分析、采集、存贮图形、视频甚至音乐等信息。2.输入设备可有哪几种逻辑功能?请举出各自对应的物理设备。可以分成以下6类逻辑输入设备:.定位(locator):指定一个坐标点。对应的物理设备有鼠标器、键盘、数字化仪、触摸屏等。.笔划(stroke):指示一个坐标点系列,如指定一条曲线的控制点等。主要物理设备有数字化仪。.送值(valuator):输入一个数值。最常用的物理设备是键盘的数字键。2.字符串(string):输入一个字符串。键盘字母键.拾取(pick):各种定位设备.选择(choise):鼠标器,数字化仪,键盘功能键等3.画出图形软件的层次结构及主要组成。------------------------------------|应用程序||----------------------------||图形支撑软件|||-------------------|||高级语言||||------------||||操作系统|------------------------------------主要部分:图形核心系统GKS计算机图形元文件CGM计算机图形设备接口CGI程序员层次结构图形系统PHIGS4.颜色查找表的概念及实现原理。它是为了让我们能够在每个祯缓存单元的位数不增加,却能具有在很大范围内挑颜色的能力。此时由祯缓存读出来的值并不是相应像素的值,而是彩色表中的一个编号。按照这个编号在彩色表中取出的数才是该像素的彩色值。5.光栅扫描显示器结构与工作原理。其一,由计算机执行相应的图形应用程序,图像生成系统接受指令将图形的矢量表示转换成像素表示,再将像素值存入显示存储器;其二,图像生成系统直接把图形输入设备(摄像机、扫描仪等)输入的图形图像直接或经过主存储器间接地存放到显示存储器中。显示控制器生成水平和垂直同步扫描信号送到监视器,使CRT电子束进行水平扫描和垂直扫描形成光栅;另一方面又根据电子束在屏幕上的行、列位置,不断地读出显示存储器中对应位置的像素值。利用彩色表将读出的像素值转换成R、G、B三原色的亮度值,来控制CRT的R、G、B电子束,在屏幕对应点生成需要的像素颜色。为了使屏幕上显示的画面不闪烁,(2)~(3)应反复进行,一般要求50~60帧/秒。6.为什么要制订图形软件标准?举例说明它的分类。制定图形软件标准的目的在于使图形软件能够在不同的计算机和图形设备之间进行移植,以便提高图形软件的利用率,降低开发成本,缩短研制周期,使图形软件向着通用、高级与设备无关的方向发展。可以分为两类:.数据接口标准(CGM,PHIGS).子程序接口标准(GKS,CGI)第三章基本图形生成算法1.Bresenham直线生成算法原理。它与DDA算法相比,有何改进?3算法思想:根据直线的斜率确定选择X或者Y方向作为计长方向,在此方向上每次递增一个单位步长(或者一个像素单位),另一个方向上是否同时产生一个单位增量由一个计算量很小的判别式来判断。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++){drawpixel(x,y,color);x=x+1,e=e+k;if(e≥0){y++,e=e-1;}}}DDA为增量算法。它根据每一次增长时在另一轴上的增长计算下一个点应该画在哪里。Bresenham算法与它相比,由于全部采用了整数计算,使算法效率比起DD有大大提高,程序中只含有+-和*2的计算,便于使用计算机内硬件实现。2.比较几种常用画圆弧算法的原理和效率。1)Bresenham算法思想其基本方法是从一个起点出发,利用判别式选择下一个显示点。判别式的值通过简单计算获得,其符号用作判断。只计算出1/8圆的点的位置,就可以画出整个圆来,效率高。2)正负法:首先区分不同象限的圆弧,然后,选定圆弧起点后,在输出圆弧过程中,根据当前点位置与理想圆弧的关系和所在象限,决定下一次的走向每次只在X或Y方向走步取点,这样一点一点逼近圆弧形状。在整个计算过程中,只使用了+-和*2运算,提高了硬件使用率。比起Bre算法,它更为简单。但生成的点数要比Bre多。3.简述两种字符生成方法。有两种基本的字符生成技术:一种是在计算机中用笔划(矢量)方式来表示,然后通过扫描转换生成,这是目前常用的方法,生成的字符效果好,但计算量大;另一种是在计算机内用位图(点阵)来表示,存储在字符高速缓冲区(字符发生器)里,显示时可以直接通过像素拷贝将其装入显示缓冲区中。这是传统的方法,简单、速度快,但不灵活。4、已知一直线段起点(0,0),终点(5,2),利用中点算法生成此直线段,写出生成过程中坐标点及判别式d的变换情况,并在下面的方格中,标出直线上各点。00100,220,22xxbyyadbaddaddbadendendiiiii−=−=⎩⎨⎧++≥+=+=+参考答案:3214012345……..15xyd001…110…2-3…321…43…531…6-1…742…85…952…105、已知一直线段起点(0,0),终点(5,2),利用Bresenham算法生成此直线段,写出生成过程中坐标点及判别式p的变换情况,并在下面的方格中,标出直线上各点。()010022,02,0iiiiiendendpyxpyxpppypyyyxxx+=∆−∆+∆−∆≥⎧⎪=⎨+∆⎪⎩∆=−∆=−参考答案:012345………………….15xyp00-1…110…23…321…4-3…531…61…742…8-5…952…10第四章区域填充1.图形学中多边形的两种表示方式,各自优缺点•顶点表示:用多边形的有序顶点序列表示多边形•点阵表示:用位于多边形内部的像素集合来表示多边形顶点表示:�优点�直观�几何意义明显�存贮量小�不足3215�难以判断哪些像素位于多边形内部�不能直接用于多边形着色点阵表示:�优点�便于用帧缓冲器(framebuffer)表示图形�面着色所需的图形表示�缺点�丢失了几何信息�占用存储空间多2.区域表示的方式,内部表示和边界表示3.四连通区域和八连通区域的定义、它们之间关系�四连通区域:区域内任意两个像素,从一个像素出发,可以通过上、下、左、右四种运动,到达另一个像素�八连通区域:区域内任意两个像素,从一个像素出发,可以通过水平、垂直、正对角线、反对角线八种运动,到达另一个像素关系:•四连通区域⊆八连通区域(反之不成立)•四连通区域的边界是八连通区域•八连通区域的边界是四连通区域4.内部表示区域种子填充算法�假设内部表示区域为G,其中的像素原有颜色为G0,需要填充的颜色为G1。�算法需要提供一个种子点(x,y),它的颜色为G0。�具体算法如下(四连通区域)Flood_Fill_4(x,y,G0,G1){if(GetPixel(x,y)==G0)//GetPixel(x,y)返回(x,y)的颜色{SetPixel(x,y,G1);//将(x,y)的添上颜色G1Flood_Fill_4(x-1,y,G0,G1);Flood_Fill_4(x,y+1,G0,G1);Flood_Fill_4(x+1,y,G0,G1);Flood_Fill_4(x,y-1,G0,G1);}}5.边界表示区域种子填充算法Fill_Boundary_4_Connnected(x,y,BoundaryColor,InteriorColor)//(x,y)种子像素的坐标;//BoundaryColor边界像素颜色;InteriorColor需要填充的内部像素颜色{if(GetPixel(x,y)!=BoundaryColor&&GetPixel(x,y)!=InteriorColor)//GetPixel(x,y):返回像素(x,y)颜色{SetPixel(x,y,InteriorColor);//将像素(x,y)置成填充颜色Fill_Boundary_4Connnected(x,y+1,BoundaryColor,InteriorColor);Fill_Boundary_4Connnected(x,y-1,BoundaryColor,InteriorColor);Fill_Boundary_4Connnected(x-1,y,BoundaryColor,InteriorColor);6Fill_Boundary_4Connnected(x+1,y,BoundaryColor,InteriorColor);}}6.判断一点是否位于多边形内部的射线法�从当前像素发射一条射线,计算射线与多边形的交点个数•内部:奇数个交点•外部:偶数个交点7.逐点判断算法逐个像素判别其是否位于多边形内部�算法描述for(y=0;y=y_resolution;y++)for(x=0;x=x_resolution;x++){if(inside(polygon,x,y))setpixel(framebuffer,x,y,polygon_color)elsesetpixel(framebuffer,x,y,background_color)}8.逐点判断算法的不足�速度慢:几十万甚是几百万像素的多边形内外判断,大量的求交、乘除运算�没有考虑像素之间的联系�结论:逐点判断算法不可取9.多边形
本文标题:计算机图形学复习材料
链接地址:https://www.777doc.com/doc-6983355 .html