ImageVerifierCode 换一换
格式:DOCX , 页数:31 ,大小:383.76KB ,
资源ID:10232122      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10232122.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(计算机图形学复习资料.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

计算机图形学复习资料.docx

1、计算机图形学复习资料计算机图形学复习资料第一章1 图形学定义ISO的定义:计算机图形学是研究怎样利用计算机表示、生成、处理和显示图形的原理、算法、方法和技术的一门学科。通俗定义:计算机图形学以表达现实世界中的对象及景物为主要目标,其核心是解决如何用图形方式作为人和计算机之间传递信息的手段,即人机界面问题。计算机图形学的研究对象图形。图形是从客观世界物体中抽象出来的带有颜色及形状信息的图和形。图形的构成要素:几何要素:点、线、面、体等描述对象的轮廓、形状。非几何要素:描述对象的颜色、材质等。图形的表示方法:点阵法:枚举出图形中所有点(简称图像)。参数法:由图形的形状参数(简称图形)。2 图形与图

2、像图像:狭义上又称为点阵图或位图图像。图像是指整个显示平面以二维矩阵表示,矩阵的每一点称为一个像素,由像素点所取亮度或颜色值不同所构成的二维画面。特点:A文件所占的空间大。B位图放大到一定的倍数后会产生锯齿。C位图图像在表现色彩、色调方面的效果比矢量图更加优越。图形:狭义上又称为矢量图形或参数图形。按照数学方法定义的线条和曲线组成,含有几何属性。或者说更强调场景的几何表示,是由场景的几何模型和景物的物理属性共同组成的。特点:A文件小。B可采取高分辨印刷。C图形可以无限缩放。3 图形学过程3D几何建模、3D动画设置、绘制(光照和纹理)、生成图像的存储和显示4 与图像处理计算机图形学:研究模型及数

3、据的建立和由模型生成图像的过程和方法。(模型到图像)图像处理:将客观景物数字化成图像,研究数字化图像的采集、去噪、压缩、增强、锐化、复原及重建等。(图像到特征)对立统一的关系。5 计算机图形信息的特点图形信息表达直观,易于理解。图形信息表达精确、精炼。图形信息能“实时”的反映事物的分布和变化规律6 计算机图形学的应用计算机辅助设计及计算机辅助制造科学计算可视化地图制图与地理信息系统计算机动画、游戏用户接口计算机艺术7 计算机图形系统作为一个图形系统,至少应具有计算、存储、输入、输出、对话等五个方面的基本功能。计算机图形系统主要有三部分构成:人、图形软件包、图形硬件设备。图像硬件设备通常由图形处

4、理器、图形输入设备和输出设备构成。第二章1图形的扫描转换确定一个像素集合及其颜色,用于显示一个图形的过程,称为图形的扫描转换。从本质上讲,图形的扫描转换是由参数表示形式到点阵表示形式的转换过程。PS1:在输出设备上输出一个点,首先需要计算出最逼近该点的像素位置,其次需要把应用程序中的坐标信息转换成所用输出设备的相应指令PS2:在显示器有限个像素中,确定最佳逼近该直线的一组像素,并且按扫描线顺序,对这些像素进行写操作,这个过程称为直线的扫描转换。2 DDA算法最基本思想:从x的左端点x0开始,向x右端点步进,步长=1(个像素)。X步进后,用y=kx+b计算相应的y坐标。最后取像素点(x, 取整r

5、ound(y)作为当前点的坐标。即当x每递增1,y递增k。PS:实际代码时用Y+0.5替代取整。PS2:当 |k|1时,必须把x,y地位互换。按照从(x1, y1)到(x2, y2)方向不同,分8个象限。例如对于方向在第1a象限内的直线而言,取增量值Dx=1,Dy=k。对于方向在第1b象限内的直线而言,取增量值Dy=1,Dx=1/k。其余同理。优点:最简单,最直接的画线算法。采用增量的思想,每计算一个像素,只需计算一个加法。缺点:由于斜率很可能是小数(浮点数),因此每个加法都意味着是浮点运算,浮点运算不利于硬件实现;每次加法后还必须进行一次四舍五入后的取整运算。3 中点画线法假设当前像素点为P

6、(xp, yp) ,则下一个像素点为P1(右) 或P2(右上) 。设M=(xp+1, yp+0.5),为p1与p2之中点,Q为理想直线与x=xp+1垂线的交点。将Q与M的y坐标进行比较。当M在Q的下方,则P2应为下一个像素点;M在Q的上方,应取P1为下一点。具体算式:d=F(M)=F(xp+1,yp+0.5) =a(xp+1)+b(yp+0.5)+c(a=y0-y1, b=x1-x0,c=x0y1-x1y0)当d0,M在Q点上方,取右方P1为下一个像素;当d=0,选P1或P2均可,约定取P1为下一个像素;改进1:根据前一点的判别式值d和整数增量即可得到后一点的判别式值d。 因此可采用增量计算,

7、只有加法,提高运算效率。若当前像素处于d0情况,则取正右方像素P1 (xp+1, yp ), 要判下一个像素位置,应计算d=d+a;若d 1,即令d = d1, 保证 d 介于0与 1之间。当d = 0.5 时, 直线接近右上方像素,d = 0, 取右上方像素,当 e 0;圆内点: F(x,y) 0设M是待选像素P1,P2的中点, M坐标(xp+1,yp-0.5),判断d=F(M)若 d=0, 则应取右下P2(Xp+1,Yp-1)为下一像素,而且下一像素的判别式为d=d+2(xp-yp)+5。例:第一个像素是(0,R),第一个M的坐标为(1,R-0.5),则判别式d的初始值为1.25-R。改进

8、:为了进一步提高算法的效率,可以将上面的算法中的浮点数改写成整数,将乘法运算改成加法运算,即仅用整数实现中点画圆法。即使用e=d-0.25代替d,即e0=1-R。则判别式 d 0 对应于e -0.25 ,由于 e0=1-R 的初值为整数, 且在运算中增量为整数,故 e -0.25 等价于 e 0 !7 Bresenham画圆法基本思路:通过比较临近像素点到圆弧的距离,设法求出该距离的递推关系,并通过符号判别像素取舍。设从点Pi(xi,yi)出发,顺时针画第一个四分圆。待选点与圆弧只可能有5种关系。下一像素有3种可能的选择:H=(xi+1)2+yi2-R2D=(xi+1)2+(yi-1)2-R2

9、V=xi2 +(yi-1)2-R2 选择像素的原则:使其与实际圆弧的距离平方达到最小具体算法:考察右下角像素D 与实际圆弧的近似程度:D=(xi+1)2+(yi-1)2-R2当D0时,D在圆外,情形结论:当D0,选D当D0时,若2 (D -xi)-1 0,选D 若2 (D -xi)-1 0,选V当D=0时,选D完整流程:(1) 初值:从(0, R)开始画圆, D=(0+1)2+(0-1)2-R2 =2(1R);(2) 根据D的符号判断,计算dHD或 dDV,确定选中D、H、V中某点;(3) 若下一像素为H(x,y) (x1,y),则 D D2x1;(4) 若下一像素为D(x,y) (x1,y1

10、),则 D D2x2y2;(5) 若下一像素为V(x,y) (x,y1),则 D D2y1;(6) 重复(2)(5), 直至完成圆弧。第三章1多边形的表示方法A顶点表示:用多边形的顶点序列来刻画多边形。特点:表示方法直观,几何意义强,占内存空间少。但没指明哪些像素在多边形内,不能直接用于着色B点阵表示:用位于多边形内部或边界上的像素集合来刻画多边形。会失去很多重要的几何信息,但它是光栅显示系统显示面着色时所需的图形表示形式。2 扫描转换与区域填充的联系与区别(1)定义多边形的扫描转换:从多边形顶点表示到点阵表示的转换,这种转换称为多边形的扫描转换。这种转换就是给多边形包围的区域着色的过程。即从

11、多边形的给定边界出发,求出位于其内部的各个像素,并将其灰度和颜色值写入帧缓存中相应单元。主要用来填充多边形区域以及由多边形拟合的其他简单曲线区域。区域填充:从给定的位置开始涂描直到指定的边界为止。区域是指一组相邻而又相连的像素,且具有相同的属性。区域填充可用在具有复杂形状边界的多边形以及交互式绘图系统中。(2)联系都是光栅图形面着色,二者可相互转换。当已知顶点表示的多边形内一点作为种子点,并用扫描转换直线段的算法将多边形的边界表示成八连通区域后,多边形扫描转换问题就可转化为区域填充问题;若已知给定区域是多边形区域,并且通过一定的方法求出它的顶点坐标,则区域填充问题便可以转化为多边形扫描转换问题

12、。(3)区别A基本思想不同,各自应用的场合不同。多边形扫描转换是指将多边形的顶点表示转换成点阵表示的方法,而区域填充只改编了区域的填充颜色,没有改变区域的表示方法。B对边界的要求不同。多边形扫描转换不要求多边形的边界封闭。而区域填充为了防止递归填充时跨越区域的边界,需设定边界。C基于的条件不同。多边形扫描转换是从多边形的边界信息出发,利用多种形式的连贯性进行填充;区域填充算法给定区域内一点作为种子点,从这点根据连通性将新的颜色扩散到整个区域。3 矩形填充填充从ymin到ymax每条扫描线位于xmin和xmax之间的区段就可以了。共享边的处理方式:如果像素的中心落在矩形边界的左方或下方时,该像素

13、属于矩形,否则不属于该矩形区域,也就是说,如果象素的中心落在矩形边界的右方或上方时,该象素不属于矩形区域。4 扫描转换三种方法逐点判断算法(射线法、弧长法);扫描线填充算法;边缘填充算法(1)射线法由被测点向某方向做射线,计算此射线与多边形所有边的交点个数。若交点个数为奇数,则被测点在多边形内部;若交点个数为偶数(包括0),则该点在多边形的外部。规定射线过顶点时,计数为1;在射线左边的边与该射线相交时交点有效,应计数;而在射线右边的边与射线相交时交点无效,不计数 (左闭右开原则)。(2)弧长法前提:多边形由有向边组成, 即规定沿多边形各边的走向其左侧(或右侧)为多边形的内部。方法:以被测点为圆

14、心作单位圆,将全部有向边向单位圆作径向投影,并计算其在单位圆上弧长的代数和。若代数和为0,则被测点在多边形之外;若代数和为2Pi,则被测点在多边形之内。(效率低)(3)扫描线填充算法算法思想:按扫描线顺序,先计算出扫描线与多边形区域边界的交点,然后判断扫描线上的哪些部分在区域边界之内,最后用要求的颜色对边界内的像素填色。实现方法:依次考察各条扫描线,一条扫描线从左至右与多边形的交点是成对出现的。即A、B点,C、D点之间的像素都位于多边形之内,则A、B为一个区段, C、D为一个区段。对这些区段内的像素用指定的颜色进行填充后,就完成了该扫描线的填充工作,再继续下一条扫描线。实现步骤(四步):A求交

15、点:计算扫描线与多边形各边的交点B交点排序:把所有交点按递增顺序进行排序C交点配对:第一个交点与第二个交点,第三个交点与第四个交点等,每对交点代表扫描线与多边形的一个相交区间(A、B) (C、D)D区间填色:把这些相交区间内的象素置成多边形颜色,把相交区间外的象素置成背景色。注1:如何保证交点正确配对?答:检查两相邻边在扫描线的哪一侧。若共享顶点的两条边:分别落在扫描线两边,取交点1次;均高于扫描线,取交点2次;均低于扫描线,取交点0次。(具体实现:检查顶点的两条边的另外两个端点的y值,按这两个y值中大于交点y值的个数是0、1、2来决定交点是取零个、一个、两个。)注2:边界上像素的取舍问题?答

16、:落在右/上边界的象素不予填充,而落在左/下边界的象素予以填充。(具体实现:对扫描线与多边形的相交区间,取“左闭右开”;而正确配对则保证了多边形的“下闭上开”。)数据结构:为了求出扫描线与多边形边的交点,最简单的方法是将多边形的所有边放在一个表中,称之为边表,在处理每条扫描线时,从表中顺序取出所有的边,分别求这些边与扫描线的交点。实际上在进行扫描线与多边形边求交点时,应只求那些与扫描线相交的边的交点。把与当前扫描线相交的边称为活性边。并把它们按与扫描线交点 x 坐标递增的顺序存放在一个链表中,称此链表为活性边表。边表(ET)构造:先按端点的纵坐标值对所有边作总分组,再将同一组中的边按端点X坐标

17、递增的顺序进行排序。活性边表(AET) :假设当前扫描线与多边形的某一条边的交点坐标为x,那么下一条扫描线与该边的交点不必从头计算,只要加上一个增量即可。(设边AB的斜率为k,若其与扫描线yi的交点横坐标为xi,则与扫描线yi1的交点的横坐标为: xi1xi1/k )活性边表(AET)的结点中至少应为对应边保存如下内容:X: 边与当前扫描线的交点的X坐标; X: 当前扫描线到下一扫描线之间x的增量Ymax: 边所交的最高扫描线号; 算法步骤:优点:A数据结构和算法本身要比逐点判断算法复杂。B速度比逐点判断算法快得多。C利用边的连贯性来加速交点的计算D利用AET以排除盲目求交E利用扫描线的连贯性

18、以避免逐点判别缺点:对各种表的维持和排序开销大。(4)边缘填充算法基本思想:对于每一条扫描线和每条多边形边的交点(x1,y1),将该扫描线上交点右方的所有像素取补。(对该区域内象素颜色作偶数次取补运算后,该区域内象素的颜色保持不变,而做奇数次取补运算后,该区域内象素的颜色变为M。)优点是算法简单,缺点是对于复杂图形,每一象素可能被访问多次,增加了运算量。(5)(栅栏)边缘填充算法栅栏:指的是一条与扫描线垂直的直线。栅栏位置通常取多边形的顶点,且把多边形分为左右两半。基本思路:对于每个扫描线与多边形的交点,将交点与栅栏之间的象素用多边形的属性值取补。算法特点:A用求补运算代替排序B数据结构和程序

19、结构简单C需要对帧缓存的大量象素反复赋值D运行速度比扫描线算法慢5 区域填充区域:指已经表示成点阵形式的填充图形,它是象素的集合。分类:4连通内部表示区域:可以从任一象素出发,通过上、下、左、右等4个方向的移动,到达另一个象素;8连通内部表示区域:从任一个象素出发,需要通过水平、垂直、对角线等8种方向的移动,到达另一个象素。区域的特点:A一条扫描线上的像素存在着相关性;B在多边形边处,像素性质才发生变化;C将相邻像素放在一起测试,从而减少测试点的数目。区域填充:指先将区域的一点赋予指定的颜色,然后将该颜色扩展到整个区域的过程。区域填充算法要求区域是连通的。区域建立和定义的方式:A1内定义区域:

20、区域内部所有象素具有同一种颜色或亮度值,而区域外的所有象素具有另一种颜色或亮度值。A2漫水法:将该区域内的全部象素都设置为新值的算法,即填充内定义的区域B1边界定义区域:边界上所有象素均具有特定的颜色或亮度值,而在区域内的象素则具有不是新值的某种颜色或亮度值。B2边界填充算法:将边界定义区域中的全部象素值都设置为新值的算法。6 漫水法(种子填充法)基本思想:设(x,y)为四连通区域内部的一点,old_Color为区域内部所有象素的原色。现取(x,y)为种子点,要将整个区域填充为新的颜色new_Color。填充算法:先判别象素(x,y)的颜色:若它的值等于old_Color,说明该象素位于该区域

21、内部,则设置该象素的颜色为new_Color,并对与该象素相邻的上、下、左、右4个相邻象素作递归填充;否则说明该象素的颜色在区域外或已被填充过,不再进行处理。7 边界填充算法基本思想:与漫水法的基本思想一样,只是在测试(x,y)点的象素是否处在区域之内同时又未被访问过时,包括两部分的内容:与边界值相比较,以检测此象素是否为该区域的一部分;与新值相比较,以决定该象素是否已被访问过。前提条件:在初始状态,区域内没有一个象素已设置为新值。但是允许新值等于边界值。在区域内测试(x,y)点的象素是否在区域之内同时又未被访问过,一般采用堆栈的方法。对边界定义的区域进行填充,基本流程如下 :A种子象素入栈,

22、当栈非空时,执行如下三步操作:B栈顶象素出栈;C将出栈象素置成多边形色;D按上、下、左、右的顺序检查与出栈象素相邻的四个象素,若其中某个象素不在边界上且未置成多边形色,则把该象素入栈。算法特点:A算法程序简单,表达清楚B需要反复递归,其执行效率并不高C未考虑象素间的相关性,而是孤立地对一个个象素进行测试。8 扫描线区域填充算法基本思想:利用了象素之间的连贯性,将扫描线上位于区域内部的相邻象素作为一个区域来考虑,只选一个象素作为代表进栈,从而极大地减少了对栈空间的需求,并且显著地提高了执行效率。算法过程:首先填充当前扫描线上位于区域内部的一个区段,它的颜色为old_Color,现在将fill_C

23、olor作为区域填充的新颜色;然后确定与这一区段相邻的上、下两条扫描线上位于区域内部的区段,分别将它们右端象素作为种子点保存起来。反复进行这一过程,直到保存的区段都填充完毕为止。基本步骤:A种子象素压入堆栈;B从包含种子象素的堆栈中推出区段的种子象素;C沿着扫描线对种子象素的左右象素进行填充,直至遇到边界象素为止,标记区段的左、右端点坐标为xl和xr;D在区间xl,xr中检查与当前扫描线y上、下相邻的两条扫描线上的象素。若存在非边界、未填充的象素,则把每一区间的最右象素作为种子点压入堆栈,返回第步。E堆栈为空时结束。第四章1输出图元属性在图元输出之前,可为其指定不同的属性,属性定义了图元在输出

24、设备上的外部特征。如线宽、线型、色彩等。(1)线宽控制顺着扫描所产生的线条轨迹,移动一把具有一定宽度的 “刷子”,刷子的形状可以是一条线段或一个正方形。也可以采用区域填充的办法间接产生有宽度的线。(2)线型控制使用具有不同线型的线条来表示不同的含义,线型属性主要包括实线、虚线、点划线。2线宽控制(1)线刷子法:在扫描转换图元时,同时显示n个像素。这样就将原来绘制单个像素的语句改写成以该像素为中心绘制水平或垂直排列的多个像素。(斜率绝对值小于1,垂直方向上像素复制;斜率绝对值大于1,水平方向上像素复制)优点:算法简单、执行效率高,适合于比较小的线宽。缺点:A线段的两端只有水平或垂直两种情况;B曲

25、线要根据当前绘制像素的斜率来决定是在水平方向还是垂直方向复制像素C在折线连接处由水平复制转为垂直复制时,会产生缺口 D当线宽为偶数个像素时,线条要么粗一个像素,要么细一个像素。(2)方形刷子法:将原来绘制单个像素的语句改写成以该像素为中心绘制画笔位图的语句。也就是将设定宽度为k的画笔的中心沿线段移动,即可产生具有线宽k的线条。(3)区域填充法:根据线条的宽度,计算出线条的外轮廓,然后调用填充图元的生成函数将其填充,产生具有一定线宽的线条。3线型控制显示虚线时:把画线算法修改为沿一直线输出带有间隙的短实线;点划线:是每画一短实线加入一点;其他线型:可通过短划线的长短不同及间隙不同来重新组合得到。

26、*4 字符分类:ASCII码字符、汉字字符表示方法: (1)位图表示对输出字符要求较高时使用。缺点:需占用大量存储空间,可以使用固定大小的字体来产生大小和字形等方面的各种变化,但效果往往不能令人满意。(2)轮廓线表示:采用直线或二、三次Bezier曲线的集合来描述一个字符的轮廓线。特点:可对字符的轮廓线作变换产生一种字体的各种变化,只需存储一套轮廓线表示,可节省大量的存储空间,但扫描转换需要更长的处理时间。字符属性:在输出字符之前,往往需要指定一系列字符属性。包括字体、字形、字符大小、字符间距、字符颜色、字符串对齐方式等5 图形裁剪在放大显示一幅图形的一部分区域时,必须确定图形中哪些部分落在显

27、示区之内,哪些落在显示区之外,以便显示落在显示区内的那部分图形。这个选择过程称为裁剪。实质:决定图形中哪些点、线段、文字、以及多边形在窗口之内。裁剪的基础:图元关于窗口内外关系的判别、图元与窗口的求交。A点裁剪:点(x, y)在窗口内的充分必要条件是,X属于XMIN,XMAX,Y同理B直线裁剪:待裁剪线段和窗口的关系若为线段完全可见、显然不可见,可直接处理;若线段至少有一端点在窗口之外,但非显然不可见,需求交。6直线裁剪算法(1)Cohen-Sutherland法对于每条线段P1P2,若P1P2完全在窗口内则显示该线段P1P2,取之;若P1P2明显在窗口外则丢弃该线段P1P2,弃之;若线段既不

28、满足“取”的条件也不满足“弃”的条件,则把线段分成两段。其中一段完全在窗口外,可弃之。然后对另一段重复上述处理。算法步骤:A建立区域码: 区域码:表示直线端点相对位置的4位二进制代码。区域码按照点与窗口边界的相对位置编码,即区域码的4位分别代表端点位于窗口的上、下、左、右在窗口上边线之上,第4位为1,否则第4位为0;在窗口下边线之下,第3位为1,否则第3位为0;在窗口右边线之右,第2位为1,否则第2位为0;在窗口左边线之左,第2位为1,否则第1位为0;B依区域码裁剪:若code1=0且code2=0,P1P2明显在窗口内,则取若code1&code20,P1P2明显在窗口外,则弃;在交点处把线段分为两段。其中一段完全在窗口外,可弃之。然后对另一段重复上述处理。注:如何判定应该与窗口的那条边求交?答:

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1