计算机图形学 (2)
- 格式:doc
- 大小:379.28 KB
- 文档页数:12
实验二: 直线的生成算法的实现班级 08信计2班学号 20080502055 姓名分数一、实验目的和要求:1.理解直线生成的原理;2.掌握几种常用的直线生成算法;3.利用C实现直线生成的DDA算法。
二、实验内容:1.了解直线的生成原理2、掌握几种基本的直线生成算法: DDA画线法、中点画线法、Bresenham画线法。
3、仿照教材关于直线生成的DDA算法, 编译程序。
4.调试、编译、运行程序。
三、实验过程及结果分析1.直线DDA算法:算法原理:已知过端点P0(x0,y0), P1(x1,y1)的直线段L(P0,P1), 斜率为k=(y1-y0)/(x1-x0), 画线过程从x的左端点x0开始, 向x右端点步进, 步长为1个像素, 计算相应的y坐标为y=kx+B。
计算y i+1 = kx i+B=kx i +B+kx=y i +kx当x=1,yi+1=yi+k, 即当x每递增1, y递增k。
由计算过程可知, y与k可能为浮点数, 需要取y整数, 源程序中round(y)=(int)(y+0.5)表示y四舍五入所得的整数值。
(1)程序代码:#include"stdio.h"#include"graphics.h"void linedda(int x0,int y0,int x1,int y1,int color){int x,dy,dx,y;float m;dx=x1-x0;dy=y1-y0;m=dy/dx;y=y0;for(x=x0;x<=x1;x++){putpixel(x,(int)(y+0.5),color);y+=m;setbkcolor(7);}}main(){int a,b,c,d,e;int graphdriver=DETECT;int graphmode=0;initgraph(&graphdriver,&graphmode,"");a=100;b=100;c=200;d=300;e=5;linedda(a,b,c,d,e);getch();closegraph();}运行结果:2.中点画线算法:假定所画直线的斜率为k∈[0,1], 如果在x方向上增量为1, 则y方向上的增量只能在0~1之间。
《计算机图形学》练习试题及参考答案二、选择题(每题2分)B 1、计算机图形学与计算几何之间的关系是( )。
A)学术上的同义词B)计算机图形学以计算几何为理论基础C)计算几何是计算机图形学的前身D).两门毫不相干的学科B 2、计算机图形学与计算机图象学的关系是( )。
A)计算机图形学是基础,计算机图象学是其发展B)不同的学科,研究对象和数学基础都不同,但它们之间也有可转换部分C)同一学科在不同场合的不同称呼而已D)完全不同的学科,两者毫不相干C 3、触摸屏是( )设备。
A)输入B)输出C)输入输出D)既不是输入也不是输出B 4.计算机绘图设备一般使用什么颜色模型?( )A)RGB;B)CMY;C)HSV ;D)HLS A 5. 计算机图形显示器一般使用什么颜色模型?( )A)RGB;B)CMY;C)HSV ;D)HLS C 6.分辨率为1024×1024的显示器各需要多少字节位平面数为24的帧缓存?( )A)512KB;B)1MB;C)2MB ;D)3MBD 7.哪一个不是国际标准化组织(ISO)批准的图形标准?( )A)GKS;B)PHIGS;C)CGM ;D)DXF C8.下述绕坐标原点逆时针方向旋转a角的坐标变换矩阵中哪一项是错误的? ( )| A B || C D |A) cos a;B) sin a;C) sin a;D) cos aA 9、在多边形的逐边裁剪法中,对于某条多边形的边(方向为从端点S 到端点P)与某条裁剪线(窗口的某一边)的比较结果共有以下四种情况,分别需输出一些顶点.请问哪种情况下输出的顶点是错误的? ( )A)S和P均在可见的一侧,则输出S和P.B)S和P均在不可见的一侧,则输出0个顶点.C)S在可见一侧,P在不可见一侧,则输出线段SP与裁剪线的交点.D)S在不可见的一侧,P在可见的一侧,则输出线段SP与裁剪线的交点和P.C 10、在物体的定义中对边的哪条限制不存在? ( )A) 边的长度可度量且是有限的B) 一条边有且只有两个相邻的面C) 一条边有且只有两个端点D) 如果一条边是曲线,那么在两个端点之间不允许曲线自相交D11.下述哪一条边不是非均匀有理B样条(NURBS)的优点? ( )A) NURBS比均匀B样条能表示更多的曲面B) 对于间距不等的数据点,用NURBS拟合的曲线比用均匀B 样条拟合的曲线更光滑C) NURBS提供的权控制方法比用控制点更能有效的控制曲线的形状D) 使用NURBS可以提高对曲面的显示效率C 12.下列关于图的存储表示的叙述中,哪一个是不正确的?A) 无向图的相邻矩阵是对称矩阵B) 对于带权的图,其相邻矩阵中值为1的元素,其值可以用边的权来权替C) 用邻接表法存储包括n个结点的图需要保存一个顺序存储的结点表和n个链接存储的边表D) 用邻接表法存储包括n条边的图需要保存一个顺序存储的结点表和n个链接存储的边表C13*.在面片的数量非常大的情况下哪一个消隐算法速度最快? ( )A) 深度缓存算法(Z-Buffer)B) 扫描线消隐算法C) 深度排序算法(画家算法)D) 不知道B14*.下面关于深度缓存消隐算法(Z-Buffer)的论断哪一条不正确? ( )A) 深度缓存算法并不需要开辟一个与图像大小相等的深度缓存数组B) 深度缓存算法不能用于处理对透明物体的消隐C) 深度缓存算法能并行实现D) 深度缓存算法中没有对多边形进行排序D15.在用射线法进行点与多边形之间的包含性检测时,下述哪一个操作不正确? ( )A) 当射线与多边形交于某顶点时且该点的两个邻边在射线的一侧时,计数0次B) 当射线与多边形交于某顶点时且该点的两个邻边在射线的一侧时,计数2次C) 当射线与多边形交于某顶点时且该点的两个邻边在射线的两侧时,计数1次D) 当射线与多边形的某边重合时,计数1次D 16*、扫描消隐算法在何处利用了连贯性(相关性Coherence)?(1)计算扫描线与边的交点;(2)计算多边形在其边界上的深度;(3)计算多边形视窗任意点处的深度值;(4)检测点与多边形之间的包含性。
计算机图形学实验报告学号:********姓名:班级:计算机 2班指导老师:***2010.6.19实验一、Windows 图形程序设计基础1、实验目的1)学习理解Win32 应用程序设计的基本知识(SDK 编程);2)掌握Win32 应用程序的基本结构(消息循环与消息处理等); 3)学习使用VC++编写Win32 Application 的方法。
4)学习MFC 类库的概念与结构;5)学习使用VC++编写Win32 应用的方法(单文档、多文档、对话框);6)学习使用MFC 的图形编程。
2、实验内容1)使用WindowsAPI 编写一个简单的Win32 程序,调用绘图API 函数绘制若干图形。
(可选任务)2 )使用MFC AppWizard 建立一个SDI 程序,窗口内显示"Hello,Thisis my first SDI Application"。
(必选任务)3)利用MFC AppWizard(exe)建立一个SDI 程序,在文档视口内绘制基本图形(直线、圆、椭圆、矩形、多边形、曲线、圆弧、椭圆弧、填充、文字等),练习图形属性的编程(修改线型、线宽、颜色、填充样式、文字样式等)。
定义图形数据结构Point\Line\Circle 等保存一些简单图形数据(在文档类中),并在视图类OnDraw 中绘制。
3、实验过程1)使用MFC AppWizard(exe)建立一个SDI 程序,选择单文档;2)在View类的OnDraw()函数中添加图形绘制代码,说出字符串“Hello,Thisis my first SDI Application”,另外实现各种颜色、各种边框的线、圆、方形、多边形以及圆弧的绘制;3)在类视图中添加图形数据point_pp,pp_circle的类,保存简单图形数据,通过在OnDraw()函数中调用,实现线、圆的绘制。
4、实验结果正确地在指定位置显示了"Hello,This is my first SDI Application"字符串,成功绘制了圆,椭圆,方形,多边形以及曲线圆弧、椭圆弧,同时按指定属性改绘了圆、方形和直线。
北京交通大学智慧树知到“计算机科学与技术”《计算机图形学》网课测试题答案(图片大小可自由调整)第1卷一.综合考核(共15题)1.鼠标、操纵杆只可以输入一系列坐标位置。
()A.错误B.正确2.从动画生成技术角度,计算机动画分为()A.关键帧动画B.变形物体动画C.过程动画D.关节动画3.下列哪些是线画图元的基本属性?()A.线型B.线宽C.长度D.颜色4.编辑3D文字时,怎样得到能够在三维空间内旋转3D文字的角度控制框?()A.利用“选择”工具单击3D文字B.利用“交互立体”工具单击3D文字C.利用“交互立体”工具双击3D文字D.利用“交互立体”工具先选中3D文字,然后再单击5.有24个位平面,分辨率是1024×768像素的光栅显示系统,需要1024×768×24/8=2359296字节的帧缓存。
()A.错误B.正确6.如果希望在CorelDRAW中创建的多个页面具有相同的图形元素,可以执行下面的哪一项操作?()A.先创建多个页面,然后分别在各个页面中绘制相同的图形元素B.创建一个页面并在此页面绘制需要的图形元素,然后再将此页面复制多个C.选择“Layout-Page Setup”命令,在弹出的对话框中进行设置D.在Master Page中创建一个图层,在此图层中绘制希望出现在各个页面中的图形元素,则此各个页面将具有相同的图形元素7.计算机图形学中常用的坐标系有哪几类()A.MCB.VCC.NDCD.DC8.关于直线生成算法的叙述中,哪个说法是正确的()A.Bresenham算法是每次决定一个像素的走法B.Bresenham算法是对中点画线算法的改进C.DDA算法是对Bresenham算法的改进D.用DDA算法确定像素位置比其它直接生成算法要快,因为DDA算法利用了光栅的特点,故其运行效率高且便于硬件实现9.下面关于反走样的论述哪个是错误的?()A.提高分辨率B.把象素当作平面区域进行采样C.采用锥形滤波器进行加权区域采样D.增强图象的显示亮度10.计算机图形学中常用的坐标系有哪几类?()A.MCB.VCC.NDCD.DC11.要想对一个选中的对象进行原位复制,先选择“Copy”命令再选择“Paste”命令。
一、 判断题(10x1=10分)1、 构成图形的要素可分为两类:刻画形状的点、线、面、体的非几何要素与反映物体表面属性或材质的明暗、色彩等的几何要素。
( 错误 )2、 参数法描述的图形叫图形;点阵法描述的图形叫图像。
( 正确 )3、 EGA/VGA 为增强图形显示效果的一种图形处理软件的名称。
( 错误 )4、 对山、水等不规则对象进行造型时,大多采用过程式模拟方法。
( 正确 )5、 若两个图形是拓扑等价的,则一个图形可通过做弹性运动与另一个图形相重合。
( 正确 )6、 0阶参数连续性和0阶几何连续性的定义是相同的。
( 正确 )7、 Bezier 曲线可做局部调整。
( 错误 )8、 字符的图形表示分为点阵和矢量两种形式。
( 正确 )9、 LCD 表示发光二极管显示器。
( 错误 )10、 使用齐次坐标可以将n 维空间的一个点向量唯一的映射到n+1维空间中。
( 错误 ) 二、 填空题(15x2=30分)1、目前常用的PC 图形显示子系统主要由3个部件组成:(1)帧缓冲存储器、(2)显示控制器、(3)ROM BIOS 。
2、 图形的输入设备有(4)键盘、鼠标、光笔(至少写三种);图形的显示设备有(5)CRT 显示器、LCD 、投影仪(至少写三种)。
3、常用坐标系一般可以分为:建模坐标系、用户坐标系、(6观察坐标系、(7)规格化设备坐标系、(8)设备坐标系。
4、在多边形的扫描转换过程中,主要是通过确定穿越多边形区域的扫描线的覆盖区间来填充,而区域填充则是从(9)给定的位置开始涂描直到(10)指定的边界条件为止。
5、一个交互式计算机图形系统应具有(11)计算 、(12)存储、(13)对话、(14)输入和输出等五个方面的功能。
三、 简答题(5x6=30分)1、 请列举常用的直线段裁减算法(四种)。
答:答:直接求交算法、编码算法、中点再分算法、Cyrus-Beck 算法。
2、 考虑三个不同的光栅系统,分辨率依次为480640⨯,10241280⨯,20482560⨯。
第一章绪论概念:计算机图形学、图形、图像、点阵法、参数法、图形的几何要素、非几何要素、数字图像处理;计算机图形学和计算机视觉的概念及三者之间的关系;计算机图形系统的功能、计算机图形系统的总体结构。
第二章图形设备图形输入设备:有哪些。
图形显示设备:CRT的结构、原理和工作方式。
彩色CRT:结构、原理。
随机扫描和光栅扫描的图形显示器的结构和工作原理。
图形显示子系统:分辨率、像素与帧缓存、颜色查找表等基本概念,分辨率的计算第三章交互式技术什么是输入模式的问题,有哪几种输入模式。
第四章图形的表示与数据结构自学,建议至少阅读一遍第五章基本图形生成算法概念:点阵字符和矢量字符;直线和圆的扫描转换算法;多边形的扫描转换:有效边表算法;区域填充:4/8连通的边界/泛填充算法;内外测试:奇偶规则,非零环绕数规则;反走样:反走样和走样的概念,过取样和区域取样。
5.1.2 中点 Bresenham 算法(P109)5.1.2 改进 Bresenham 算法(P112)习题答案习题5(P144)5.3 试用中点Bresenham算法画直线段的原理推导斜率为负且大于1的直线段绘制过程(要求写清原理、误差函数、递推公式及最终画图过程)。
(P111)解: k<=-1 |△y|/|△x|>=1 y为最大位移方向故有构造判别式:推导d各种情况的方法(设理想直线与y=yi+1的交点为Q):所以有: y Q-kx Q-b=0 且y M=y Qd=f(x M-kx M-b-(y Q-kx Q-b)=k(x Q-x M)所以,当k<0,d>0时,M点在Q点右侧(Q在M左),取左点 P l(x i-1,y i+1)。
d<0时,M点在Q点左侧(Q在M右),取右点 Pr(x i,y i+1)。
d=0时,M点与Q点重合(Q在M点),约定取右点 Pr(x i,y i+1) 。
所以有递推公式的推导:d2=f(x i-1.5,y i+2)当d>0时,d2=y i+2-k(x i-1.5)-b 增量为1+k=d1+1+k当d<0时,d2=y i+2-k(x i-0.5)-b 增量为1=d1+1当d=0时,5.7 利用中点 Bresenham 画圆算法的原理,推导第一象限y=0到y=x圆弧段的扫描转换算法(要求写清原理、误差函数、递推公式及最终画图过程)。
《计算机图形学》思考练习题第一章计算机图形学概论1.比较计算机图形学与图象处理技术相同点和不同点。
计算机图形学是研究怎样用数字计算机生成、处理和显示图形的一门学科。
图像处理技术研究如何对连续图像取样、量化以产生数字图像,如何对数字图像做各种变换以方便处理,如何滤去图像中的无用噪声,如何压缩图像数据以便存储和传输,图像边缘提取,特征增强和提取。
2.列举三个计算机图形的应用实例。
勘探、绘制地形地貌,系统模拟,虚拟现实。
辅助教学设计。
3.简述计算机图形学发展动向。
造型技术—真实图形生成技术—人机交互技术—基于网络的图形技术第二章计算机图形系统概述1.叙述计算机图形系统的基本功能。
输入、输出、计算、存储、对话他的基本功能是帮助人们设计、分析、采集、存贮图形、视频甚至音乐等信息。
2.输入设备可有哪几种逻辑功能?请举出各自对应的物理设备。
.定位(locator): 指定一个坐标点。
对应的物理设备有鼠标器、键盘、数字化仪、触摸屏等。
.笔划(stroke): 指示一个坐标点系列, 如指定一条曲线的控制点等。
主要物理设备有数字化仪。
.送值(valuator): 输入一个数值。
最常用的物理设备是键盘的数字键。
.字符串(string):输入一个字符串。
键盘字母键.拾取(pick):各种定位设备.选择(choise): 鼠标器,数字化仪,键盘功能键等3.画出图形软件的层次结构及主要组成。
------------------------------------| 应用程序|| ----------------------------| | 图形支撑软件|| | -------------------| | | 高级语言|| | | ------------| | | | 操作系统|------------------------------------主要部分:图形核心系统GKS 计算机图形元文件CGM 计算机图形设备接口CGI程序员层次结构图形系统PHIGS4.颜色查找表的概念及实现原理。
颜色查找表是一维线性表,其每一项的内容对应一种颜色,它的长度由帧缓存单元的位数决定。
实现原理:把颜色码放在一个独立的表中,帧缓存存放的是颜色表中各项的索引值,这样在帧缓存单元的位数不增加的情况下,具有了大范围挑选颜色的能力。
5.光栅扫描显示器结构与工作原理。
工作原理:在这种显示器中,电子束的运动轨迹是固定的。
即从左到右、自上而下扫描荧光屏,来产生一幅光栅。
特点:由于图形是以点阵的形式存储在帧缓冲器中。
所以光栅扫描显示器的电子束按从上到下、从左到右的顺序依次扫描屏幕,来建立图形。
6.为什么要制订图形软件标准?举例说明它的分类。
制定图形软件标准的目的在于使图形软件能够在不同的计算机和图形设备之间进行移植,以便提高图形软件的利用率, 降低开发成本,缩短研制周期, 使图形软件向着通用、高级与设备无关的方向发展。
数据接口标准:CGM子程序接口标准:GKS、CGI、PHIGS第三章基本图形生成算法1.Bresenham 直线生成算法原理。
它与DDA 算法相比,有何改进?算法思想: 根据直线的斜率确定选择X或者Y方向作为计长方向, 在此方向上每次递增一个单位步长(或者一个像素单位), 另一个方向上是否同时产生一个单位增量由一个计算量很小的判别式来判断。
DDA为增量算法。
它根据每一次增长时在另一轴上的增长计算下一个点应该画在哪里。
Bresenham算法与它相比,由于全部采用了整数计算,使算法效率比起DD有大大提高,程序中只含有+ -和*2的计算,便于使用计算机内硬件实现。
2.比较几种常用画圆弧算法的原理和效率。
1)Bresenham算法思想其基本方法是从一个起点出发, 利用判别式选择下一个显示点。
判别式的值通过简单计算获得, 其符号用作判断。
只计算出1/8圆的点的位置,就可以画出整个圆来,效率高。
2)正负法:首先区分不同象限的圆弧,然后,选定圆弧起点后,在输出圆弧过程中,根据当前点位置与理想圆弧的关系和所在象限,决定下一次的走向每次只在X或Y方向走步取点,这样一点一点逼近圆弧形状。
在整个计算过程中,只使用了+ -和*2运算,提高了硬件使用率。
比起Bre算法,它更为简单。
但生成的点数要比Bre多。
3.简述两种字符生成方法。
一种是在计算机中用笔划(矢量)方式来表示,然后通过扫描转换生成, 这是目前常用的方法,生成的字符效果好, 但计算量大;另一种是在计算机内用位图(点阵)来表示, 存储在字符高速缓冲区(字符发生器)里, 显示时可以直接通过像素拷贝将其装入显示缓冲区中。
这是传统的方法,简单、速度快,但不灵活。
4.何谓四连通和八连通?写出一种边界表示的八连通区域填充算法。
4连通区域:取区域中的任何两个像素,从一象素出发,通过上、下、左、右4种运动,只经过该区域的点可以达到另一像素。
8连通区域:取区域中任何两个像素,从一象素出发通过上、下、左、右、两条对角线方向共8种运动,只经过该区域的点可达到另一像素。
漫水法:Procedure flood-fill-4(x,y,boundary-color,new-color:integer)beginif getpixel(framebuffer,x,y)<>boundary-color andgetpixel(framebuffer,x,y)<>new-colorthen beginsetpixel(framebuffer,x,y,newcolor);flood-fill-4(x, y+1, boundary-color,new-color);flood-fill-4(x, y-1, boundary-color,new-color);flood-fill-4(x+1, y, boundary-color,new-color);flood-fill-4(x-1, y, boundary-color,new-color);flood-fill-4(x+1, y+1, boundary-color,new-color);flood-fill-4(x-1, y-1, boundary-color,new-color);flood-fill-4(x+1, y+1, boundary-color,new-color);flood-fill-4(x-1, y-1, boundary-color,new-color);endend5.解释活化边表的思想,以多边形区域填充为例介绍它的应用。
边的活化链表AEL:记录当前扫描线与棱边的交点序列。
初值为空,在处理过程中利用ET表和求交点的递推关系不断刷新。
.链表AEL的边元素由以下4个域组成:ymax:该棱边的上端点的y坐标;x:该棱边与当前扫描线交点的x坐标;Dx:该棱边的斜率m的倒数;next:指向下一条棱边的指针。
6.已知多边形各个顶点的坐标为(2,2), (2,4), (8,6), (12,2), (8,1), (6,2)及(2,2), 在用扫描线填充算法实现扫描转换时, 写出其边表(ET)和全部的活化边表(AET)的内容。
第四章图形变换与裁剪1.什么是灭点?在我们从一定的视角看3D图形时,会看到彼此平行的直线在远处有交点,这个交点就叫做灭点。
2.试用几种不同顺序的简单几何变换,求出将平面上的任一线段P1(x1,y1), P2(x2, y2)变换成与X 轴重合的变换阵,并说明其等效性。
斜率为k = (y2-y1)/ x2-x1 ,可以使用以下几种方法进行变换:a.先把它平移到原点处,再旋转成水平线。
其变换矩阵为/1 0 0 \ / cosθsinθ0 \T = | 0 1 0 | | -sinθcosθ0 |\-x1 –y1 1 / \ 0 0 1 /(其中θ= arctag(k) )b. 先旋转,使它水平,再平移到X轴上/ cosθsinθ0 \ /1 0 0 \T = | -sinθcosθ0 || 0 1 0 |\ 0 0 1 / \Tx 0 1 /(其中Tx 可由几何计算得出)c.先平移,使原点在其所在的直线上,再旋转/1 0 0 \ / cosθsinθ0 \T = | 0 1 0 | | -sinθcosθ0 |\0 My 1 / \ 0 0 1 /其中My = x1*(y2-y1)/(x2-x1) – y1由计算结果可知,三者是等价的。
3.已知OXYZ 坐标系下平面方程是x+y+z+d=0,试求变换距阵T,使该平面在O’X’Y’Z’坐标系下变成z’=0。
三维坐标变换:比例变换:/ a 0 0 0 \T = | 0 e 0 0 || 0 0 i 0 |\ 0 0 0 1 /其中a,e,i分别为在X,Y,Z坐标上的比例改变平移变换:/ 1 0 0 0 \T = | 0 1 0 0 || 0 0 1 0 |\ l m n 1 /其中a,e,i分别为在X,Y,Z坐标上的平移量旋转变换:(手写)4.试简述二维图形裁剪的基本原理及可选用的裁剪策略.裁剪的原理: . 在显示图形之前, 组成图形的每一个基本元素都要经过裁剪, 因此裁剪算法直接影响整个图形系统的效率。
. 裁剪的基本目的是判断图形元素是否在所考虑的区域内。
如在区域内, 则进一步求出在区域内的那一部分。
因此裁剪处理包含两部分内容:1)点在区域内外的判断;2)计算图形元素与区域边界的交点。
1.编码裁剪法(Sutherland-Cohen算法)2.中点分割裁剪法3.多边形的裁剪1. 逐边裁剪法2. 双边裁剪法第五章人机交互技术1. 基本的交互任务有哪些?它们可用什么设备执行?基本交互任务1. 定位2. 选择3. 数量输入4. 文本输入5. 三维交互任务2. 举例说明WINDOWS 系统常用的交互方式,编程实现其中一例。
3. 叙述设计人机交互的一般风格和原则。
现在计算机系统的人机界面一般具有下列风格,即: “所见即所得”(what you see is what you get) ,直接操作(direct manipulate)及菜单和图形符号(icon)驱动。
–“所见即所得”在交互式图形系统中一般都能做到, 即在屏幕上所见到的设计结果和用硬拷贝所得的输出结果是一致的。
–直接操作是对对象、特性及关系等操作时用户可得到一种直观及形象的表示, 以说明这个操作是正确地被执行了。
人机界面设计的一些基本原则:(1) 简单易学(2) 提供反馈(3) 对错误操作容易纠正Undo(4) 设计一致性功能布局、颜色、代号等应一致第六章曲线曲面的表示1. Bezier 曲线具有哪些特性?试用n 的归纳法证明其凸包性。
2. B 样条曲线的定义及其特点。
特点:(1) 凸包性(2) 分段参数多项式(3)连续性(4)几何不变性(5)保凸性(6)局部调整性(7)造型灵活性3. 比较Bezier 曲面和B样条曲面的功能特点。