计算机图形学第二版科学出版社课后答案
第三章习题答案
3.1 计算机图形系统的主要功能是什么?
答:一个计算机图形系统应具有计算、存储、输入、输出、交互等基本功能,它们相互协作,完成图形数据的处理过程。
1. 计算功能
计算功能包括:
1)图形的描述、分析和设计;2)图形的平移、旋转、投影、透视等几何变换;
3)曲线、曲面的生成;4)图形之间相互关系的检测等。
2. 存储功能
使用图形数据库可以存放各种图形的几何数据及图形之间的相互关系,并能快速方便地实现对图形的删除、增加、修改等操作。
3. 输入功能
通过图形输入设备可将基本的图形数据(如点、线等)和各种绘图命令输入到计算机中,从而构造更复杂的几何图形。
4. 输出功能
图形数据经过计算后可在显示器上显示当前的状态以及经过图形编辑后的结果,同时还能通过绘图仪、打印机等设备实现硬拷贝输出,以便长期保存。
5. 交互功能
设计人员可通过显示器或其他人机交互设备直接进行人机通信,对计算结果和图形利用定位、拾取等手段进行修改,同时对设计者或操作员输入的错误给以必要的提示和帮助。
3.2 阴极射线管由哪些部分组成?它们的功能分别是什么?
答:CRT主要由阴极、电平控制器(即控制极)、聚焦系统、加速系统、偏转系统和阳极荧光粉涂层组成,这六部分都在真空管内。
阴极(带负电荷)被灯丝加热后,发出电子并形成发散的电子云。这些电子被电子聚集透镜聚焦成很细的电子束,在带正高压的阳极(实际为与加速极连通的CRT屏幕内侧的石墨粉涂层,从高压入口引入阳极高电压)吸引下轰击荧光粉涂层,而形成亮点。亮点维持发光的时间一般为20~40mS。
电平控制器是用来控制电子束的强弱的,当加上正电压时,电子束就会大量通过,在屏幕上形成较亮的点,当控制电平加上负电压时,依据所加电压的大小,电子束被部分或全部阻截,通过的电子很少,屏幕上的点也就比较暗。所以改变阴极和
控制电平之间的电位差,就可调节电子
束的电流密度,改变所形成亮点的明暗
程度。
利用偏转系统(包括水平方向和
垂直方向的偏转板)可将电子束精确定
位在屏幕的任意位置上。只要根据图形
的几何坐标产生适当的水平和垂直偏转磁场(或水平和垂直偏转板静电场),图 2.2CRT原理图
控制电于束的偏转,就可以在CRT荧光屏上得到发亮的图形轨迹。
3.4 分辨率为800×600,能显示216种颜色的显示器,至少需要选用帧缓存的容量为
(1)512K (2)1M (3)2M (4)3M。
答:1MB
3.7 灰度等级为256,分辨率为1024×768的显示器,至少需要选用帧缓存的容量为
(1)512K (2)1M (3)2M (4)3M。
答:1MB
3.9 说明显卡主要部分的功能。
答:常见显卡的结构中包括:显卡的BIOS芯片、图形处理芯片、显存、数模转换器(Random Access Memory Digital-to-Analog Converter,RAMDAC)芯片、接口等。显卡的工作原理如图2.16所示。
图2.16 显卡工作原理图
1. 显卡BIOS芯片
显卡BIOS芯片主要用于保存VGA(Video Graphics Array,视频图形阵列)BIOS程序。VGA BIOS 是视频图形卡基本输入、输出系统(Video Graphics Adapter Basic Input and Output System),它的功能与主板BIOS功能相似,主要用于显卡上各器件之间正常运行时的控制和管理,所以BIOS程序的技术质量(合理性和功能)必将影响显卡最终的产品技术特性。
2. 图形处理芯片
图形处理芯片是显卡的核心,显卡的性能基本上取决于图形处理芯片的技术类型和性能。可将它看做是完成图像生成与操纵的、独立于CPU的一个本地处理器,它管理与系统总线的接口,这个接口应具有零等待的猝发式传送能力。
图形处理芯片的主要功能是依据设定的显示工作方式,自主地、反复不断地读取显示存储器中的图像点阵数据,将它们转换成R、G、B三色信号并配以同步信号送至显示器,即刷新屏幕。
图形处理芯片还要提供一个由系统总线至显示存储器总线的通路,以支持CPU将主存中已修改好的点阵数据写入到显示存储器,即修改或更新屏幕,这些修改数据写入显示存储器,一般都利用扫描回程的消隐时间进行,因此显示屏幕不会出现凌乱;或者显示存储器的容量足够大,保存不止一屏图像数据;待一屏数据修改完再用于刷新显示。
图形处理芯片还有颜色查找表的功能。颜色查找表是由高速的随机存储器组成,用来存储表达像素色彩的代码。配置了颜色查找表的帧缓存中的每一像素对应单元的代码不再代表该像素的色彩值,而是代表了颜色查找表的地址索引。根据这一索引值读出的颜色查找表中所储存的像素色彩,经D/A转换后送至显示器。颜色查找表每个单元所包括的位数一般大于帧缓存的色彩值位数,从而采用颜色查找表可以起到丰富色彩的作用。
现在的图形处理芯片都具有图形加速功能,也就是说它提供图形函数的计算功能,专门用来执行图形加速任务,可以大大减少CPU所必须处理的图形函数,使CPU可以执行更多其他的任务,从而提高了计算机的整体性能。
衡量显示处理芯片的技术先进性主要是看其所具有的2D/3D图形处理能力、芯片图形处理引擎的数据位宽度、与显存之间的数据总线宽度和所支持的显存类型容量、内部RAMDAC的工作时钟频率、具备几条像素渲染处理流水线、所支持的图形应用程序接口(API)种类以及芯片生产工艺技术水平等。
3. 显示存储器(VRAM)
显示存储器(简称显存)的用途主要是用来保存由图形芯片处理好的各帧图形显示数据,然后由数模转换器读取并逐帧转换为模拟视频信号再提供给显示器使用,所以显存也被称为“帧缓存”,它的大小直接影响到显卡可以显示的颜色多少和可以支持的最高分辨率。
4. 数模转换器
显存中存储的是数字信息,而显示器工作需要的是模拟信号,这就需要在显存和显示器中间有一个数模转换器(Random Access Memory Digital-to-Analog Converter,RAMDAC),将数字信号转换为模拟信号,使显示器能够显示图像。RAMDAC的另一个重要作用是提供显卡能够达到的刷新率,它也影响着显卡输出的图像质量。
3.11 列举你所知道的计算机图形输入和输出设备。
答:图形输入设备:键盘、鼠标、游戏杆、控制按钮、光笔、数字化仪、触摸板、图形扫描仪、手写输入板、跟踪球、空间球、语音输入和数据手套等。
图形显示设备:阴极射线管显示器、液晶显示器、等离子显示器和荧光显示器等。
图形绘制设备:静电绘图仪、喷墨绘图机、激光打印机、笔式绘图机、热敏和热升华绘图仪/打印机、照相排版设备等。
3.12 下列语句中,正确的论述是()
(1)在图形系统中,显示器的分辨率只影响图形显示的精度。
(2)在光栅扫描图形显示器中,所有图形都应转化为像素点来显示。
(3)一般图形系统中所配置的点阵绘图(打印)机,其分辨率对图形运算的精度没有直接影响。(4)在光栅扫描显示器中,可直接显示用几何特征参数描述图形元素(点、线、圆、弧等)。
(5)在图形系统中,显示器的分辨率有限,但不限制图形处理运算的精度。
(6)在光栅扫描显示器中,采用像素点阵显示所有图形。
答:(2)、(3)、(5)、(6)正确。
第四章习题答案
4.1(无)
4.4 多边形的顶点和点阵表示各有什么优点?
答:顶点表示是用多边形的顶点的序列来描述多边形,该表示几何意义强、占内存少。(但他不能直观地说明哪些像素在多边形内)。点阵表示用位于多边形内的像素的集合来描述多边形。该方法虽然没有多边形的几何信息,是面着色所需要的图像表示形式。
4.9请简要叙述种子算法的基本思想及其用堆栈实现八连通算法原理。
答:种子算法充分利用了递归调用的机理,在前一种子点确定并变为新颜色后,按照自身调用的八向顺序依次查找新的种子点,找到即变为新颜色,继续下一种子的查找。未查的方向被压栈保存,等退栈时继续查找,最终完成蔓延至整个区域所有点都变为新颜色。
4.12在区域填充的扫描线算法中加上反走样程序,使用连续性来减少连续扫描线上的计算量。
答案:
deltax=xe-xs;
deltay=ye-ys;
m=deltay/deltax;
y=ys;
x=xs;
a=1-m;
d=0.5;
for(I=1;I setpixel(framebuffer,x,y,d); if(d>=a) { y=y+1; d=d-a; } else d=d+m; x=x+1; } 第五章习题答案 5.2证明三维变换矩阵的乘积对以下运算顺序是可交换的: (1). 任意两个连续平移。 '100'100100''010'010010''001'001001'100010001100011x x x x x x x y y y y y y y z z z z z z z +???????????? ????????????+????????????==???????????? +???????????????????????? "100100'100'"010010'010'"001001'001'10 00 10 00 110 00 11x x x x x x x y y y y y y y z z z z z z z +???????????? ????????????+????????????==???????????? +???????????????????????? 由上面两式可得:'"'"'"x x y y z z ????????=???????????? (2). 任意两个连续的放缩变换。 " ' "' "'"'"'"''0 00 00 0'000000'000 000x x x x y y y y z z z z x s s x s s x y s s y s s y z s s z s s z ???????????? ????????????==???????????????????????????????????? ' "'"'"'"'"'""000000"000000"0 00 x x x x y y y y z z z z x s s x s s x y s s y s s y z s s z s s z ????????????????????????==?????????????????????????????? ????? ? 由上两式可得:'''x y z ??????????="""x y z ?? ????? ??? (3). 任意两个连续的关于任一坐标轴的旋转。 以绕x 轴为例,绕其他轴旋转同理可得 'cos sin 0cos sin 0cos()sin()0'sin cos 0sin cos 0sin()cos()0'0 10 1001x x x y y y z z z ααθ θαθαθααθθαθαθ--+-+???????????? ????????????==++???????????????????????????????????? "cos sin 0cos sin 0cos()sin()0"sin cos 0sin cos 0sin()cos()0"0 10 1001x x x y y y z z z θθαααθαθθθαααθαθ--+-+????????????????????????==++???????????????????????????????????? 由上两式可得:'''x y z ??????????="""x y z ?? ????? ??? 5.7将梁友栋-Barsky 裁减算法改写成多边形裁减算法。 答:梁友栋-Barsky 裁减算法是线段裁减,如果对多边形的每条边用该方法,会使原来封闭的多边形变成不封闭或是一些离散的线段。为此可以将梁友栋-Barsky 裁减算法改写成多边形裁减算法。 包含PiPi+1的直线与窗口4条边界相交,其中两个是潜在的进入交点,另外两个是潜在的离开交点,计算出交点的参数值,并分别记为t_in1,t_in2,t_out1,t_out2.跨越窗口直线有2种情形 1 2 for(每条边e){ 确定边的方向 用此来确定包含线首先与裁减区域的哪条边界线相交 寻找退出点的t 值 if(t_out2>0) 寻找第2个进入点的t 值 if(t_in2>t_out1){ if (0 output_vert(turning_vertex); }else{ If (0 Output_vert(适当的面交点); Else Output_vert(起始顶点); If (1>=t_out1) Output_vert(适当的面交点); Else Output_vert(终止顶点); } } If(0 Output_vert(适应的窗口角点); }/*对每条边*/ 第六章习题答案 6.1 下面有关平面几何投影的叙述中,哪些是正确的? (1). 平面几何投影中,透视投影的投影中心到投影平面的距离是有限的。(Y) (2). 平面几何投影中,一组平行线的投影仍保持平行。(N) (3). 平行投影与透视投影相比,视觉效果更有真实感,而且能真实地反映物体的精确集合尺寸与形状。(N) (4). 在三维空间中的平行投影变换不可能产生灭点。(Y) 6.2(无) 6.3(无) 第八章习题答案 8.4 设投影中心为原点,构造一个由透视投影到平行投影的变换。此变换使得原物体平行投影在Oxy 平面 上和将原物体透视投影在规范化视见平面上产生的图像相同。 答: 原物体在平面)/(b c c z z z +''=上的透视投影是: ????? ???? ???=01 000000000v v v z z z Per 其中,)/(b c c z z z v +''=。点),,(z y x P 在视见平面上的透视投影是: ),,( v v v z z y z z x z P ' 透视投影到平行投影变换p T 为: ?? ???? ???? ? ???---=01 111000000 00f f f v v p z z z z z T 这里,f z z =是规范化前裁剪平面的位置。 现在,对点),,(z y x P 应用变换p T ,得到点: )) 1(,,( f f v v z z z z z y z z x z Q --' Q '在Oxy 平面上的平行投影为: )0,,( z y z z x z Q v v ' 所以 Q ' 和 P ' 产生相同的投影图像。而且, p T 变换将以 1 ,,,,==-==-==z z z z y z y z x z x f 和为边界的规范化透视视见体变换到以 1,0,,,,==-==-==z z z y z y z x z x v v v v 为边界的长方体上。 8.6 请叙述扫描线消隐算法的基本思想及其算法的具体实现。 答: 1、基本思想:从最上面的一条扫描线开始工作,向下对每一条扫描线进行处理。在处理当前扫描线时,开一个一维数组作为当前扫描线的Z-buffer 。首先找出与当前扫描线相关的多边形,以及每个多边形中相关的边对。对每一个边对之间的小区间上的各象素,计算深度,并与Z-buffer 中的值比较,找出各象素处可见平面,计算颜色,写帧缓存。对深度计算,采用增量算法。 2、算法的具体实现: 首先,建立几个类 class polygon { public: double a,b,c,d; ShapeTyp Type; int deltaY ,yMax; double detaZx,deltaZy; COLORREF color; bool visible; int IP; //,可以将所有的多边形放在一个一维数组中,所在位置即位其ip public: void fillPoly(int i,pt3D X[],COLORREF color1,int ip,ShapeTyp type) { //实现填充多边形的各个变量 } }; struct Edge { public: ShapeTyp Type; int deltaY; double deltaX; int IP; double topX; int topY; public: /////引进topY一是为了在将相应的边加入y桶时方便,而是为了判断活化边结束的时候 //////////对边的信息进行填充后,deltay!=0决定了将其放入ymax决定的链表中void fillEdge(pt3D x,pt3D y,int ip,ShapeTyp type) {//填充边的各个参数} }; struct EdgeLive { public: ShapeTyp Type; double xl; int deltaYl; double deltaXl; double xr; int deltaYr; double deltaXr; double zl; double deltaZx,deltaZy; int IP; public: //////////活化边的填充的时候,说明这两条边肯定不是并行与x轴的直线,, /////////因为在相eldgeBox填入内容的时候应该已经进行了处理 }; 这些准备工作完成之后,有了前期的准备工作---三维模型的建立及其可以发生的仿射变换,就可以进行下面的扫描线算了。 函数void ScanningZBufffer();的功能便是进行该算法的实现。在实现时,要有一个初始化工作,完成将变化之后各个体的各个面和边放入到合适的链表中。所需得各个链表如下所示: list list list list 函数void Initialize( );负责进行上面的工作。之后便可以进行算法的主体了; 程序原代码见附件。 8.8 简述用z缓冲器算法来确定哪一个面被隐藏的方法。 答: z缓冲器算法设置了一个二维数组,类似于帧缓冲器。但是z缓冲器存放的是每个象素点的深 度值,而不是帧缓冲器中的颜色值。z 缓冲器的初始值为某个大的数值,通常是后裁剪平面的距离。在判断像素),(y x 上的哪个平面更靠近观察者时,就可以简单地比较z 缓冲器中的深度值和当前平面的深度值。如果当前平面的值比z 缓冲器中的值小(即距视点更近),则用新值替换原z 缓冲器中的值,像素的颜色值也变成新平面的颜色值。 第九章习题答案 9.4 局部光照明模型的不足之处是什么? 答: 1、局部光照明模型仅考虑光源直接照射在景物表面产生的光照效果; 2、局部光照明模型通常假定物体表面是光滑的且由理想材料构成; 3、局部光照明模型中,环境假设为由白光照明,且反射光和透射光的颜色由用户来选定。 9.7 叙述Gouraud 和Phong 明暗处理技术的基本原理和两者的异同。 答: 1、Gouraud 明暗处理的基本原理: 对离散的光亮度采样作双线性插值以获得一连续的光亮度函数。具体做法是:先计算出 多边形顶点处的光亮度值,把它们作为曲面光亮度的采样点,然后再对多边形顶点的光亮度值插值计算出多边形内任一点的光亮度。 2、Phong 明暗处理的基本原理: 对多边形顶点处的法向量采样作双线性插值,在多边形内构造一个连续的法向量函数, 依据这一函数计算的多边形内各采样点的法向量带入光亮度计算公式,即得到由多边形近似表示的曲面在各采样点处的光亮度。 3、相同点: 过程中都采用了双线性插值。 4、不同点: (1)、Gouraud 对光亮度进行双线性插值,是线性光亮度插值,计算简单; Phong 对法向量进行双线性插值,最终是非线性光亮度差值,计算量比较大。 (2)、Gouraud 不能正确地模拟高光; Phong 能正确地模拟高光。 (3) Gouraud 会产生马赫带效应; Phong 大大减轻了马赫带效应。 9.8 参见图8.9,试说明怎样用双线性插值来计算多边形内一点P 的光亮度。 答: 设 B A V V V P 、、、、、321的坐标分别为 ) ,(),(),(),(332211y x y x y x y x 、、、、 ),(),(B B A A y x y x 和。又设这些点的颜色或亮度值为B A I I I I I I 和、、、、321。则有: 2 11 22121 y y y y I y y y y I I A A A --+--= 3 11 33131 y y y y I y y y y I I B B B --+--= 且 A B A B A B B A x x x x I x x x x I I --+--= 对于RGB 颜色,将上述公式应用到每个颜色的分量值上。