计算机图形学复习材料汇编
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
题型 • 简答题(20%左右) • 填空题(30%左右) • 计算题(30%左右) • 算法描述题(20%左右)
第一章 计算机图形学概述 1. 图形学、图形定义 计算机图形学是一门研究如何利用计算机显示、生成和处理图形的原理、方法和技术的学科。 图形通常由点、线、面、体等几何属性和颜色、纹理、线型、线宽等非几何属性组成。 图形:能够在人的视觉系统中形成视觉印象的客观对象。 2. 图形分类 从生成技术上来看,图形主要分为两类:一类是基于线条信息表示的,如工程图、等高线地图、曲面 的线框图等;另一类是真实感图形。 3. 图形与图像之间的关系 图形与图象是密切相关但又不同的两个概念。图象纯指计算机内以位图(Bitmap)形式存在的亮度和颜 色信息;图形则由场景的几何模型和物理属性共同描述。 4. 计算机图形学的应用领域(6 个) 影视;游戏;工业设计;科学研究;艺术;医学;广告;教育;培训;军事等 5. 光栅扫描的显示系统和随机扫描的显示系统的特点 光栅扫描的显示系统:按照从上到下然后再跳回顶部的顺序逐行扫描。 随机扫描的显示系统特点:电子束可随意移动,只扫描屏幕上要显示的部分。 6. 帧缓冲存储器 用来存储像素颜色(灰度)值的存储器就称为帧缓冲存储器。简称帧缓冲器(显存)。 帧缓存中单元数目与显示器上像素的数目相同,单元与像素一一对应,各单元的数值决定了其对应像 素的颜色。显示颜色的种类与帧缓存中每个单元的位数有关
2
Flood_Fill_4(x, y, G0, G1) { if(PutPixel(x,y) ==G0 ) {
SetPixel(x, y, G1); Flood_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) { if(GetPixel(x,y) != BoundaryColor && GetPixel(x,y)!= InteriorColor ) { SetPixel(x, y, InteriorColor); Fill_Boundary_4Connnected(x, y+1, BoundaryColor, InteriorColor); Fill_Boundary_4Connnected(x, y-1, BoundaryColor, InteriorColor); Fill_Boundary_4Connnected(x-1, y, BoundaryColor, InteriorColor); Fill_Boundary_4Connnected(x+1, y, BoundaryColor, InteriorColor); } } 6. 判断一点是否位于多边形内部的射线法 从当前像素发射一条射线,计算射线与多边形的交点个数
float k, e; dx = x1-x0, dy = y1- y0, k=dy/dx; e=-0.5, x=x0, y=y0; for (i=0; idx; i++) { drawpixel (x, y, color);
x=x+1,e=e+k; if (e0) { y++, e=e-1;} } } DDA为增量算法。它根据每一次增长时在另一轴上的增长计算下一个点应该画在哪里。Bresenham算法与它 相比,由于全部采用了整数计算,使算法效率比起DD有大大提高,程序中只含有 + - 和*2的计算,便于使用 计算机内硬件实现。 2. 比较几种常用画圆弧算法的原理和效率。
有两种基本的字符生成技术:一种是在计算机中用笔划(矢量)方式来表示,然后通过扫描转换生成, 这是 目前常用的方法,生成的字符效果好, 但计算量大;另一种是在计算机内用位图(点阵)来表示, 存储在字符高 速缓冲区(字符发生器)里, 显示时可以直接通过像素拷贝将其装入显示缓冲区中。这是传统的方法, 简单、速 度快, 但不灵活。
第三章 基本图形生成算法 1. Bresenham 直线生成算法原理。它与DDA 算法相比,有何改进?
算法思想: 根据直线的斜率确定选择X或者Y方向作为计长方向, 在此方向上每次递增一个单位步长(或 者一个像素单位), 另一个方向上是否同时产生一个单位增量由一个计算量很小的判别式来判断。
void Bresenhamline (int x0,int y0,int x1, int y1,int color) { int x, y, dx, dy;
1
1)Bresenham算法思想 其基本方法是从一个起点出发, 利用判别式选择下一个显示点。判别式的值通过 简单计算获得Fra Baidu bibliotek 其符号用作判断。只计算出1/8圆的点的位置,就可以画出整个圆来,效率高。
2)正负法:首先区分不同象限的圆弧,然后,选定圆弧起点后,在输出圆弧过程中,根据当前点位置与 理想圆弧的关系和所在象限,决定下一次的走向每次只在X或Y方向走步取点,这样一点一点逼近圆弧形状。在 整个计算过程中,只使用了+ - 和*2运算,提高了硬件使用率。比起Bre算法 ,它更为简单。但生成的点数要 比Bre多。 3. 简述两种字符生成方法。
第四章 区域填充 1. 图形学中多边形的两种表示方式,各自优缺点 顶点表示:用多边形的有序顶点序列表示多边形 点阵表示:用位于多边形内部的像素集合来表示多边形
顶点表示: 优点 直观 几何意义明显 存贮量小 不足 难以判断哪些像素位于多边形内部 不能直接用于多边形着色
点阵表示: 优点 便于用帧缓冲器(frame buffer)表示图形 面着色所需的图形表示 缺点 丢失了几何信息 占用存储空间多 2. 区域表示的方式,内部表示和边界表示 3. 四连通区域和八连通区域的定义、它们之间关系 四连通区域:区域内任意两个像素,从一个像素出发,可以通过上、下、左、右四种运动,到达 另一个像素 八连通区域:区域内任意两个像素,从一个像素出发,可以通过水平、垂直、正对角线、反对角 线八种运动,到达另一个像素 关系: • 四连通区域 八连通区域 (反之不成立) • 四连通区域的边界是八连通区域 • 八连通区域的边界是四连通区域 4. 内部表示区域种子填充算法 假设内部表示区域为 G,其中的像素原有颜色为 G0,需要填充的颜色为 G1。 算法需要提供一个种子点(x,y),它的颜色为 G0。 具体算法如下(四连通区域)
第一章 计算机图形学概述 1. 图形学、图形定义 计算机图形学是一门研究如何利用计算机显示、生成和处理图形的原理、方法和技术的学科。 图形通常由点、线、面、体等几何属性和颜色、纹理、线型、线宽等非几何属性组成。 图形:能够在人的视觉系统中形成视觉印象的客观对象。 2. 图形分类 从生成技术上来看,图形主要分为两类:一类是基于线条信息表示的,如工程图、等高线地图、曲面 的线框图等;另一类是真实感图形。 3. 图形与图像之间的关系 图形与图象是密切相关但又不同的两个概念。图象纯指计算机内以位图(Bitmap)形式存在的亮度和颜 色信息;图形则由场景的几何模型和物理属性共同描述。 4. 计算机图形学的应用领域(6 个) 影视;游戏;工业设计;科学研究;艺术;医学;广告;教育;培训;军事等 5. 光栅扫描的显示系统和随机扫描的显示系统的特点 光栅扫描的显示系统:按照从上到下然后再跳回顶部的顺序逐行扫描。 随机扫描的显示系统特点:电子束可随意移动,只扫描屏幕上要显示的部分。 6. 帧缓冲存储器 用来存储像素颜色(灰度)值的存储器就称为帧缓冲存储器。简称帧缓冲器(显存)。 帧缓存中单元数目与显示器上像素的数目相同,单元与像素一一对应,各单元的数值决定了其对应像 素的颜色。显示颜色的种类与帧缓存中每个单元的位数有关
2
Flood_Fill_4(x, y, G0, G1) { if(PutPixel(x,y) ==G0 ) {
SetPixel(x, y, G1); Flood_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) { if(GetPixel(x,y) != BoundaryColor && GetPixel(x,y)!= InteriorColor ) { SetPixel(x, y, InteriorColor); Fill_Boundary_4Connnected(x, y+1, BoundaryColor, InteriorColor); Fill_Boundary_4Connnected(x, y-1, BoundaryColor, InteriorColor); Fill_Boundary_4Connnected(x-1, y, BoundaryColor, InteriorColor); Fill_Boundary_4Connnected(x+1, y, BoundaryColor, InteriorColor); } } 6. 判断一点是否位于多边形内部的射线法 从当前像素发射一条射线,计算射线与多边形的交点个数
float k, e; dx = x1-x0, dy = y1- y0, k=dy/dx; e=-0.5, x=x0, y=y0; for (i=0; idx; i++) { drawpixel (x, y, color);
x=x+1,e=e+k; if (e0) { y++, e=e-1;} } } DDA为增量算法。它根据每一次增长时在另一轴上的增长计算下一个点应该画在哪里。Bresenham算法与它 相比,由于全部采用了整数计算,使算法效率比起DD有大大提高,程序中只含有 + - 和*2的计算,便于使用 计算机内硬件实现。 2. 比较几种常用画圆弧算法的原理和效率。
有两种基本的字符生成技术:一种是在计算机中用笔划(矢量)方式来表示,然后通过扫描转换生成, 这是 目前常用的方法,生成的字符效果好, 但计算量大;另一种是在计算机内用位图(点阵)来表示, 存储在字符高 速缓冲区(字符发生器)里, 显示时可以直接通过像素拷贝将其装入显示缓冲区中。这是传统的方法, 简单、速 度快, 但不灵活。
第三章 基本图形生成算法 1. Bresenham 直线生成算法原理。它与DDA 算法相比,有何改进?
算法思想: 根据直线的斜率确定选择X或者Y方向作为计长方向, 在此方向上每次递增一个单位步长(或 者一个像素单位), 另一个方向上是否同时产生一个单位增量由一个计算量很小的判别式来判断。
void Bresenhamline (int x0,int y0,int x1, int y1,int color) { int x, y, dx, dy;
1
1)Bresenham算法思想 其基本方法是从一个起点出发, 利用判别式选择下一个显示点。判别式的值通过 简单计算获得Fra Baidu bibliotek 其符号用作判断。只计算出1/8圆的点的位置,就可以画出整个圆来,效率高。
2)正负法:首先区分不同象限的圆弧,然后,选定圆弧起点后,在输出圆弧过程中,根据当前点位置与 理想圆弧的关系和所在象限,决定下一次的走向每次只在X或Y方向走步取点,这样一点一点逼近圆弧形状。在 整个计算过程中,只使用了+ - 和*2运算,提高了硬件使用率。比起Bre算法 ,它更为简单。但生成的点数要 比Bre多。 3. 简述两种字符生成方法。
第四章 区域填充 1. 图形学中多边形的两种表示方式,各自优缺点 顶点表示:用多边形的有序顶点序列表示多边形 点阵表示:用位于多边形内部的像素集合来表示多边形
顶点表示: 优点 直观 几何意义明显 存贮量小 不足 难以判断哪些像素位于多边形内部 不能直接用于多边形着色
点阵表示: 优点 便于用帧缓冲器(frame buffer)表示图形 面着色所需的图形表示 缺点 丢失了几何信息 占用存储空间多 2. 区域表示的方式,内部表示和边界表示 3. 四连通区域和八连通区域的定义、它们之间关系 四连通区域:区域内任意两个像素,从一个像素出发,可以通过上、下、左、右四种运动,到达 另一个像素 八连通区域:区域内任意两个像素,从一个像素出发,可以通过水平、垂直、正对角线、反对角 线八种运动,到达另一个像素 关系: • 四连通区域 八连通区域 (反之不成立) • 四连通区域的边界是八连通区域 • 八连通区域的边界是四连通区域 4. 内部表示区域种子填充算法 假设内部表示区域为 G,其中的像素原有颜色为 G0,需要填充的颜色为 G1。 算法需要提供一个种子点(x,y),它的颜色为 G0。 具体算法如下(四连通区域)