计算机图形学复习材料

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

简 称 “ 取 ” 之 。
(2)若 P1P2 在裁剪边界的一侧,则丢弃该线段,简称“弃”之。
3
不足: 算法的数据结构和程序结构复杂 对各种表的维持和排序开销太大,适合软件实现而不适合硬件实现 11. 多边形扫描转换与区域填充比较 基本思想不同 多边形扫描转换将多边形顶点表示转换为点阵表示,扫描过程利用了多边形的各种连贯性 区域填充只改变区域的颜色,不改变区域的表示方法。填充过程利用了区域的连贯性 对边界的要求不同 多边形扫描转换只要求每一条扫描线与多边形有偶数个交点 区域填充中 四连通区域必须是封闭的八连通边界 八连通区域必须是封闭的四连通边界 出发点不同 区域填充:知道需要区域内一个种子点(复杂计算) 多边形扫描转换:没有要求 13、解释活化边表的思想,以多边形区域填充为例介绍它的应用。 边的活化链表AEL:记录当前扫描线与棱边的交点序列。初值为空,在处理过程中利用ET表和求交点的递推 关系不断刷新。.链表AEL的边元素由以下4个域组成: ymax:该棱边的上端点的y坐标; x:该棱边与当前扫描线交点的x坐标; Dx:该棱边的斜率m的倒数; next:指向下一条棱边的指针。 14、已知多边形各个顶点的坐标为(2,2), (2,4), (8,6), (12,2), (8,1), (6,2)及(2,2), 在用扫描线填充算 法实现扫描转换时, 写出其边表(ET)和全部的活化边表(AET)的内容。(应用略) 第章五 图形变换与裁剪 1、 三维变换的具体计算(平移、缩放、旋转) (计算题) 3、裁剪算法分类(裁剪窗口的维数、裁剪窗口、对象维数、实现方式) 裁剪窗口的维数:二维、三维 裁剪窗口:规则(矩形、六面体)和不规则的(任意多边形和多面体) 对象维数:点、线、多边形、多面体 实现方式:软件和硬件实现 4、什么是灭点? 在我们从一定的视角看3D图形时,会看到彼此平行的直线在远处有交点,这个交点就叫做灭点。 7、试简述二维图形裁剪的基本原理及可选用的裁剪策略. 裁剪的原理: . 在显示图形之前, 组成图形的每一个基本元素都要经过裁剪, 因此裁剪算法直接影响整 个图形系统的效率。. 裁剪的基本目的是判断图形元素是否在所考虑的区域内。如在区域内, 则进一步求出在 区域内的那一部分。因此裁剪处理包含两部分内容:1)点在区域内外的判断;2)计算图形元素与区域边界的交 点。 1. 编码裁剪法(Sutherland-Cohen算法) 2. 中点分割裁剪法 多边形的裁剪 1. 逐边裁剪法 2. 双边裁剪法 8、写出梁友栋-Barsky 二维直线段裁剪算法的伪代码 void LB_LineClip(x1,y1,x2,y2,XL,XR,YB,YT) { float x1,y1,x2,y2,XL,XR,YB,YT;
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. 判断一点是否位于多边形内部的射线法 从当前像素发射一条射线,计算射线与多边形的交点个数 • 内部:奇数个交点 • 外部:偶数个交点 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) else setpixel(framebuffer,x,y,background_color) } 8. 逐点判断算法的不足 速度慢:几十万甚是几百万像素的多边形内外判断,大量的求交、乘除运算 没有考虑像素之间的联系 结论:逐点判断算法不可取 9. 多边形扫描转换算法(具体计算) 10. 多边形扫描转换的优点与不足 优点: 充分利用多边形的区域、扫描线和边的连贯性,避免了反复求交的大量运算
1
1)Bresenham算法思想 其基本方法是从一个起点出发, 利用判别式选择下一个显示点。判别式的值通过 简单计算获得, 其符号用作判断。只计算出1/8圆的点的位置,就可以画出整个圆来,效率高。 2)正负法:首先区分不同象限的圆弧,然后,选定圆弧起点后,在输出圆弧过程中,根据当前点位置与 理想圆弧的关系和所在象限,决定下一次的走向每次只在X或Y方向走步取点,这样一点一点逼近圆弧形状。在 整个计算过程中,只使用了+ - 和*2运算,提高了硬件使用率。比起Bre算法 ,它更为简单。但生成的点数要 比Bre多。 3. 简述两种字符生成方法。 有两种基本的字符生成技术:一种是在计算机中用笔划(矢量)方式来表示,然后通过扫描转换生成, 这是 目前常用的方法,生成的字符效果好, 但计算量大;另一种是在计算机内用位图(点阵)来表示, 存储在字符高 速缓冲区(字符发生器)里, 显示时可以直接通过像素拷贝将其装入显示缓冲区中。这是传统的方法, 简单、速 度快, 但不灵活。
第三章 基本图形生成算法 1. Bresenham 直线生成算法原理。它与DDA 算法相比,有何改进? 算法思想: 根据直线的斜率确定选择X或者Y方向作为计长方向, 在此方向上每次递增一个单位步长(或 者一个像素单位), 另一个方向上是否同时产生一个单位增量由一个计算量很小的判别式来判断。 void Bresenhamline (int x0,int y0,int x1, int y1,int color) { int x, y, dx, dy; 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. 比较几种常用画圆弧算法的原理和效率。
4
float dx,dy,u1,u2; tl=0;tu=1; dx =x2-x1;dy =y2-y1; if(ClipT(-dx,x1-Xl,&u1,&u2) if(ClipT(dx,XR-x1, &u1,&u2) if(ClipT(-dy,y1-YB, &u1,&u2) if(ClipT(dy,YT-y1, &u1,&u2) { displayline(x1+u1*dx,y1+u1*dy, x1+u2*dx,y1+u2*dy) return; } } bool ClipT(p,q,u1,u2) { float p,q,*u1,*u2; float r; if(p<0) { r=q/p; if(r>*u2) return FALSE; else if(r>*u1) { *u1=r; return TRUE; } } else if(p>0) { r=p/q; if(r<*u1)return FALSE; else if(r<*u2) { *u2=r;return TRUE;} } else if(q<0) return FALSE; //p=0 return TRUE; } 10、描述 Cohen-SutherLand 二维直线段裁剪算法的基本原理,并以图形示意。 算法的的基本原理: 对于每条线段 P1P2 分为三种情况处理。 ( 1 ) 若 P1P2 完 全 在 窗 口 内 , 则 显 示 该 线 段 P1P2
题型 • • • • 第一章 1.
ቤተ መጻሕፍቲ ባይዱ
2.
3.
4. 5.
6.
简答题(20%左右) 填空题(30%左右) 计算题(30%左右) 算法描述题(20%左右) 计算机图形学概述 图形学、图形定义 计算机图形学是一门研究如何利用计算机显示、生成和处理图形的原理、方法和技术的学科。 图形通常由点、线、面、体等几何属性和颜色、纹理、线型、线宽等非几何属性组成。 图形:能够在人的视觉系统中形成视觉印象的客观对象。 图形分类 从生成技术上来看,图形主要分为两类:一类是基于线条信息表示的,如工程图、等高线地图、曲面 的线框图等;另一类是真实感图形。 图形与图像之间的关系 图形与图象是密切相关但又不同的两个概念。图象纯指计算机内以位图(Bitmap)形式存在的亮度和颜 色信息;图形则由场景的几何模型和物理属性共同描述。 计算机图形学的应用领域(6 个) 影视;游戏;工业设计;科学研究;艺术;医学;广告;教育;培训;军事等 光栅扫描的显示系统和随机扫描的显示系统的特点 光栅扫描的显示系统:按照从上到下然后再跳回顶部的顺序逐行扫描。 随机扫描的显示系统特点:电子束可随意移动,只扫描屏幕上要显示的部分。 帧缓冲存储器 用来存储像素颜色(灰度)值的存储器就称为帧缓冲存储器。简称帧缓冲器(显存) 。 帧缓存中单元数目与显示器上像素的数目相同,单元与像素一一对应,各单元的数值决定了其对应像 素的颜色。显示颜色的种类与帧缓存中每个单元的位数有关
第四章 区域填充 1. 图形学中多边形的两种表示方式,各自优缺点 顶点表示:用多边形的有序顶点序列表示多边形 点阵表示:用位于多边形内部的像素集合来表示多边形 顶点表示: 优点 直观 几何意义明显 存贮量小 不足 难以判断哪些像素位于多边形内部 不能直接用于多边形着色 点阵表示: 优点 便于用帧缓冲器(frame buffer)表示图形 面着色所需的图形表示 缺点 丢失了几何信息 占用存储空间多 2. 区域表示的方式,内部表示和边界表示 3. 四连通区域和八连通区域的定义、它们之间关系 四连通区域:区域内任意两个像素,从一个像素出发,可以通过上、下、左、右四种运动,到达 另一个像素 八连通区域:区域内任意两个像素,从一个像素出发,可以通过水平、垂直、正对角线、反对角 线八种运动,到达另一个像素 关系: • 四连通区域 八连通区域 (反之不成立) • 四连通区域的边界是八连通区域 • 八连通区域的边界是四连通区域 4. 内部表示区域种子填充算法 假设内部表示区域为 G,其中的像素原有颜色为 G0,需要填充的颜色为 G1。 算法需要提供一个种子点(x,y),它的颜色为 G0。 具体算法如下(四连通区域)
相关文档
最新文档