计算机图形学期末复习题
更新时间:2023-09-15 17:37:01 阅读量: 资格考试认证 文档下载
声 明
此文档属个人总结成果,完全根据老师所给复习题与范围总结而成。内容中存在错误在所难免,望大家自行更正,见谅。如若囫囵吞枣,不假思索,导致后果,恕本人概不负责,转载请附带此声明。 祝大家考试顺利!!
0954班XXXX
一 问答题
1. 什么是计算机图形学?
答: 计算机图形学是研究怎样用计算机生成、处理和显示图形的一门学科。
ISO定义:计算机图形学是研究通过计算机将数据转换为图形,并在专用设备上显示的原理、方法和技术
的学科。
2. 什么是图形?什么是图像?图形和图像主要有哪些区别?
答:图形:是用一个指令集合来描述的。这些指令集合构成一幅图的所有直线,圆,圆弧,矩形,曲线等的位置、维数和大小、形状、颜色。也被称为矢量图形或几何图形。
图像:是由描述图像中各个像素点的亮度与颜色的数位集合组成。也叫点阵图像或位图图像。 区别如下:
A 图形与分辨率无关,放大后不会失真;图形与分辨率有关,放大后会失真。 B 在文件存储方面,图像的文件一般比较大。而图形文件小得多。 3 计算机图形学的研究内容。
答:如何在计算机中表示图形、以及利用计算机进行图形的计算、处理和显示的相关原理与算法,构成了计算机图形学的主要研究内容。
? 图形硬件、图形标准、图形交互技术、光栅图形生成算法、曲线曲面造型、实体造型、真实感图形计算
与显示算法,以及科学计算可视化、计算机动画、自然景物仿真、虚拟现实等。 4 计算机图形系统的功能和组成。 答:功能(5个):计算功能;存储功能;输入功能;输出功能;交互功能。 组成:
5图形输出设备包括那两类?列举出你知道的输出设备。 答:显示器:画点设备;绘图仪:画线设备
6什么是光栅图形输出设备?
答:可以输出栅格图像的各类输出设备的统称。例如显示器,绘图仪等等。 7什么是图形的扫描转换?扫描转换的两个任务是什么?
答:在光栅设备上基本图形生成也被称为基本图形的扫描转换或光栅化。 图形的扫描转换的任务
a) 确定最佳逼近于该图形的一组象素
b) 按扫描线顺序,对这些象素进行写操作
8 列举出你知道的直线扫描转换的方法。答:DDA算法,中点画线算法,Bresenham画线算法
9 什么是增量算法?答:在一个迭代算法中,如果每一步的x、y值是用前一步的值加上一个增量来获得,则称为增量算法。
10 什么是多边形的扫描转换?
答:光栅图形学的一个基本问题是把多边形的顶点表示转换为点阵表示。这种转换称之为多边形的扫描转换。 多边形的扫描转换本质是多边形填充。
11 什么是裁剪?为什么我们要在计算机图形学中研究裁剪算法?
答:确定图形中哪些部分落在显示区内,哪些部分落在显示区之外,以便只显示显示区内的那部分图形的方法叫做裁剪。研究裁剪可以有目的的研究图形的性质,形状等等。
12 一条直线和裁剪窗口之间的关系有几种?答:三种。线段完全可见;显然不可见;其他。 13 图形变换的本质是什么?怎样实现图形变换。 答:经过几何变换的图形具有以下两个特点:
a) 图形变化了,但原图形的构成规则(拓扑关系)没有改变;
b) 图形发生的变化,是因为其顶点位置(几何关系)的改变决定的。
实现图形变换的方法:平移,旋转,对称,错切,基本比例变换等
一.图形学原理
1. DDA算法的基本原理是什么?
答:是最直观的根据斜率的偏移程度,决定是以x为步进方向还是以y为步进方向。然后在相应的步进方向上,步进变量每次增加一个像素,而另一个相关坐标变量则为Y=kx+b,DDA算法是一种迭代的算法,也是增量算法。
DDA算法的核心:分析|K|的取值范围,如下:|K|<1时,y=y+k, x=x+1 ; |K|>1时,x=x+1/k ,y=y+1。 2. 中点画线算法的基本原理是什么?
答:假设确定象素点(xi ,yi)为选定的像素,则下一个像素只能是 (xi +1 ,yi)或(xi +1 ,yi+1),设M为这两点之间的中点通过M点与实现的位置关系确定下一像素的位置。
? M在直线的下方,取(x+1,y+1)为下一像素点 ? M在直线的上方,取(x+1,y)为下一像素点 直线的方程F(x,y)=y-kx-b=0将平面分为三个区域: ? F(x,y)=0点在直线上 ? F(x,y)>0点在直线的上方 ? F(x,y)<0点在直线的下方
3. Bresenham画线算法的基本原理是什么?
答:如果已经确定(xi,yi)为直线上的一点,那么下一点的坐标为
d值的计算 ? d初=0,
? 每走一步:d=d+k
? 一旦y方向上走了一步,d=d-1
4. 八分圆思想的基本原理是什么?
答:由于圆被定义为到给定中心位置(xc,yc)的距离为r的点集。圆心位于原点的圆有4条对称轴x=0,y=0,x=y,x=-y.若已知圆弧上一点(x,y),可以得到其关于4条对称轴的其他7个点,这种性质就是圆的八对称性。因此,只要扫描转换1/8圆弧,就可以用八对称性求出整个圆弧的像素集。 void circlePoint(int x, int y){
putpixel ( x, y); putpixel ( y, x); putpixel ( -y, x); putpixel ( -x, y); putpixel ( -x, -y); putpixel ( -y, -x); putpixel ( y, -x); putpixel ( x, -y); }
5. 中点画圆算法的基本原理是什么?
答:P为当前点亮象素,那么,下一个点亮的象素可能是P1(Xp+1,Yp)或P2(Xp +1,Yp -1)。 F(X,Y)=X2 + Y2 - R2 ,d的初值等于1.25-R有如下结论:
F(M)< 0则M在圆内-> 取P1 F(M)>= 0 则M在圆外-> 取P2
#include 6. 边填充算法的基本思想是什么? 答:对于每一条扫描线和每条多边形边的交点,将该扫描线上交点右方的所有像素取补。 7. 种子填充算法的基本思想是什么? 答:将区域的一点赋予指定的颜色,然后将颜色扩展到整个的区域的过程。种子填充算法要求整个区域是连通的。 8. 如果裁剪窗口的左下角坐标为(xmin,ymin),右上角坐标为(xmax,ymax),某点(x,y)在窗口内 的充分必要条件是什么? 答:(x,y)要符合的条件是:xmin <= x <= xmax ymin <= y <= ymax 代码如下: if(x <= xmax && x>=xmin && y <= ymax && y>=ymin ) putpixel(x,y,c); 9. Cohen-Sutherland裁剪的基本思想是什么? 答:将窗口边线两边沿长,得到九个区域,每一个区域都用一个四位二进制数标识。 编码的顺序为:上,下,右,左。直线的端点都按其所处区域赋予相应的区域码,用来标识出端点相对于裁剪矩形边界的位置。 ? 若P1P2完全在窗口内则code1=0,且code2=0 ? 若P1P2完全在窗口外则code1&code2≠0 ? 其他情况在交点处把线段分为两段。其中一段完全在窗口外,可弃之。然后对另一段重复上述处理。 10 中点分割裁剪算法的基本思想是什么? 答:所谓中点分割算法实质上是采用对分查找法求交点。 将线段分割成相等的两段,然后对每一小段重复上述的检查,直至找到每段与窗口边界的交点或分割小段的长度充分小,可以视为一点时为止。 11 梁-barsekey算法的基本思想是什么? 答:使用直线的参数方程,把二维裁剪问题化为两次一维裁剪 参数u的算法 初始化线段交点的参数:u1=0,u2=1; 计算出各个裁剪边界的p、q值; 调用函数clipTest(),在函数中根据p、q来判断:是舍弃线段还是改变交点的参数。 ? 当p<0时,参数r用于更新u1;(u1=max{u1,…,rk}) ? 当p>0时,参数r用于更新u2;(u2=min{u2,…,rk}) 如果更新了u1或u2后,使u1>u2,则舍弃该线段。 当p=0且q<0时,因为线段平行于边界并且位于边界之外, p、q的四个值经判断后,如果该线段未被舍弃,则裁剪线段的端点坐标由参数u1和u2的值决定。 ? 当Δx≥0(或Δy≥0)时,称x=xL(y=yB)为始边, x=xR(y=yT)为终边。 ? 当Δx<0(Δy<0)时,称x=xL(y=yB)为终边, x=xR(y=yT)为始边。 12边裁剪是针对什么样的图形的裁剪算法?针对什么样的窗口,基本思想是什么? ? 答:每次用窗口的一条边界对要裁剪的多边形进行裁剪,裁剪时,顺序地测试多边形各顶点,保留边界内侧 的顶点,删除外侧的顶点,同时,适时地插入新的顶点:即交点和窗口顶点,从而得到一个新的多边形顶点序列。 ? 然后以此新的顶点序列作为输入,相对第二条窗边界线进行裁剪,又得到一个更新的多边形顶点序列。 ? 依次下去,相对于第三条、第四条边界线进行裁剪,最后输出的多边形顶点序列即为所求的裁剪好了的 多边形。 13种子填充算法的算法分析(问答题) 答:1 有些像素会多次入栈,降低了算法的效率;同时栈结构也占用一定的存储空间。 2 递归执行,算法简单,但效率不高。区域内的每一像素都引起一次递归的调用,进栈出栈费时费内存。 二.应用题 1. 用DDA算法画一条直线,直线的起点为(0,0),直线的终点为(5,2)。 K=2/5=0.4 x y y+0.5 0 0 0.5 1 0.4 0.9 2 0.8 1.3 3 1.2 1.7 4 1.6 2.1 5 2.0 2.5 画图省略 2. 用Bresenham画线算法画一条直线,直线的起点为(0,0),直线的终点为(5,2) d=0 ,k=0.4 xi yi 第一次d 第二次d 0 0 0 0 1 0 0.4 0.4 2 1 0.8 -0.2 3 1 0.2 0.2 4 2 0.6 -0.4 5 2 0 画图过程省略 3 用中点画线算法画出(0,0)到(5,2)的一条直线 答:dx=5 ,dy=2 d的初始值是dx-2dy=1 若d<0 ,(x,y)更新为(x+1,y+1),则d的增量为2(dx-dy)=6 若d>0,(x,y)更新为(x+1,y),则d的增量为 -2dy= -4 X y d 0 0 1 1 0 -3 2 1 3 3 1 -1 4 2 5 5 2 画图过程省略 4用Bresenham画线算法画一条直线,直线的起点为(0,0),直线的终点的x坐标为你的学号对5求余,y坐标为对8求余(如果为0,x坐标加3,y坐标加5)。 答:12%5=2 12%8=4 ,因此画(0,0)到(2,4)的直线 做法同上 省略 5写出下图的新边表,并写出扫描线2的活化边表。 6 画出针对下面的多边形采用边填充算法后每一步的填充情况。 题有错误!!! 填充过程省略,详见ppt,白给分的题!!! 7 已知窗口左下角坐标(50,50),右上角坐标(400,400)。Cohen-Sutherland裁剪算法的编码图如 下。直线的端点坐标P1(40,100)和P2(500,420),请参照编码图示,求出P1和P2所在区域的分区代码C1和C2。说出P1P2的 裁剪过程。 Cohen-Sutherland算法代码: void CS_LineClip(float x1,float y1,float x2,float y2){ code1=encode(x1,y1); code2=encode(x2,y2); while(code1!=0 ||code2!=0){ if((code1&code2)!=0) return; code = code1; if(code1==0) code = code2; ……(求交点) if(code ==code1){ x1=x; y1=y; code1 =encode(x,y);} else { x2=x; y2=y; code2 =encode(x,y); } } setcolor(4); line(x1,y1,x2,y2); } 8 直线的编码裁剪算法中,直线P1 P2的编码分别为C1 和C2。分别就下面两种情况,说明直线P1 P2与裁 剪窗口的关系。 1)C1= =0并且C2= =0. p1p2完全在窗口内,即线段完全可见 2)(C1&C2)= =0。属于其他情况 3)(C1&C2) !=0。 p1p2显然不可见 9 已知窗口左边界XL=100,线段端点P1(50,110), P2(200,200),求线段与窗口左边界的交点。 10 用中点分割算法求直线与窗口边界的交点时,假如直线的长度为64,那么最多求交多少次? 11 分析直线B采用梁-baskey算法对直线进行裁剪过程的。 12 按逐边裁剪算法对四边形ABCD进行裁剪,每次选择窗口的一条边对图形进行裁剪,选择的顺序有多种情 况,下面列了其中的六种。用你的学号对6求余然后加1,选择得到的数字对应的情况,例如如果你的学号 为11,对6求余值为5,则你选择第6种情况,即按左上右下的顺序进行裁剪。将每次裁剪的情况画出来,并写明对应的字符序列。 窗口的情况:(1)上下左右(2)左右上下(3)上左下右(4)左下右上(5)上右下左(6)左上右下 你的学号为 12 a的值为 13 分析针对任意点的比例(旋转/对称)变换的过程,写出变换矩阵。 三.编程题 1. 写出八向联通的种子填充算法的程序。 void FloodFill8(int x,int y,int fillcolor, int edgelolor){ int current; current=getpixel(x,y); if((current!=edgecolor)&& (current!=fillcolor)){ putpixel(x,y,fillcolor); FloodFill8(x+1,y,fillcolor,edgecolor); FloodFill8(x-1,y,fillcolor,edgecolor); FloodFill8(x,y+1,fillcolor,edgecolor); FloodFill8(x,y-1,fillcolor,edgecolor); 后面还有4句 } } 2. 写出八分圆思想的代码。 void circlePoint(int x, int y){ putpixel ( x, y); putpixel ( y, x); putpixel ( -y, x); putpixel ( -x, y); putpixel ( -x, -y); putpixel ( -y, -x); putpixel ( y, -x); putpixel ( x, -y); } 3. 编写代码,调用C语言的图形函数,画一组同心圆,同心圆的圆心座标为(320,240),半径从50到500, 同心圆的个数为10。 #include 4. 边标志算法的代码 EdgeMarkFill(int p[][2],int n,int bcolor,int fcolor){ int i,x,y,flag,xmin,xmax,ymin,ymax; /*求出xmin,xmax,ymin,ymax;*/ for(y=ymin;y<=ymax;y++) { flag=-1; for(x=xmin;x<=xmax;x++){ if(getpixel(x,y)==bcolor) flag=-flag; if(flag==1) putpixel(x,y, fcolor); } } } 5. 编写代码,写出按上下左右的原则,对点进行Cohen-Sutherland编码。 #include
正在阅读:
计算机图形学期末复习题09-15
《道路工程施工技术》复习05-11
甲级单位编制中高压阀门项目可行性报告(立项可研+贷款+用地+20104-15
宾馆餐饮业成本控制的几点反思06-27
GPON脚本10-15
施工技术管理制度@04-15
大佳何镇实施三项措施培养使用村级后备干部05-27
电脑公司员工管理规章制度05-11
【小学教育】2022年最新部编人教版小学数学一年级上册:第3单元04-05
物理实验操作评定记录(学生用)110-15
- 梳理《史记》素材,为作文添彩
- 2012呼和浩特驾照模拟考试B2车型试题
- 关于全面推进施工现场标准化管理实施的通知(红头文件)
- 江西省房屋建筑和市政基础设施工程施工招标文件范本
- 律师与公证制度第2阶段练习题
- 2019-2020年最新人教版PEP初三英语九年级上册精编单元练习unit6训练测试卷内含听力文件及听力原文
- 小升初数学模拟试卷(十四) 北京版 Word版,含答案
- 认识创新思维特点 探讨创新教育方法-精选教育文档
- 00266 自考 社会心理学一(复习题大全)
- 多媒体在语文教学中的运用效果
- 派出所派出所教导员述职报告
- 低压电工作业考试B
- 18秋福建师范大学《管理心理学》在线作业一4
- 中国铝业公司职工违规违纪处分暂行规定
- 13建筑力学复习题(答案)
- 2008年新密市师德征文获奖名单 - 图文
- 保安员培训考试题库(附答案)
- 银川市贺兰一中一模试卷
- 2011—2017年新课标全国卷2文科数学试题分类汇编 - 1.集合
- 湖北省襄阳市第五中学届高三生物五月模拟考试试题一
- 复习题
- 期末
- 图形
- 计算机
- 国家计委、建设部《工程勘察设计收费管理规定》(计价格10号)
- 《脊梁》解说词
- 人教版2018年二年级上册数学第8单元《数学广角 - 搭配(一)》教案
- 中兴笔试题
- 第三章 磁法勘探 - 图文
- 工程报建费费用与流程
- 四年级下册综合实践活动教案
- 大班幼儿彩泥活动中教师指导策略的研究详解
- 节约型园林绿化建设研究
- 初级会计电算化 练习题及答案 第六章 其他核算子系统
- 索尼手机系统自带软件精简列表
- “大部制”改革与政府管理创新 课程的考试答案(90分)
- 四年级上册品社教案全
- 机械原理复习大纲
- 东辛店中学七年级思想品德第一次月考试题
- 国家职业汉语能力测试(ZHC)简介 - 图文
- 大管棚施工技术交底
- 部编人教版二年级语文下册第三单元综合测试AB卷及答案
- 施工直接发包审批(备案)表
- 《离骚》(节选)背诵训练