《计算机图形学》第1-5章课后习题参考答案_第1页
《计算机图形学》第1-5章课后习题参考答案_第2页
《计算机图形学》第1-5章课后习题参考答案_第3页
《计算机图形学》第1-5章课后习题参考答案_第4页
《计算机图形学》第1-5章课后习题参考答案_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 第一章 1、 试述计算机图形学研究的基本内容? 答:见课本 的 。 2、 计算机图形学、图形处理与模式识别本质区别是什么?请各举一例说明。 答 :计算机图形学是研究根据给定的描述,用计算机生成相应的图形、图像 ,且 所生成的图形、图像可以显示屏幕上、硬拷贝输出或作为数据集存在计算机中的学科。计算机图形学研究的是从数据描述到图形生成的过程。例如计算机动画 制作 。 图形处理是利用计算机对原来存在物体的映像进行分析处理,然后再现图像。例如工业中 的 射线探伤。 模式识别是指计算机对图形信息进行识别和分析描述,是 从图形(图像)到描述的表达过程。例如邮件分捡设备扫描信件上手写的邮政编码,并将编码用图像复原成数字。 3、 计算机图形学与 术关系如何? 答:见课本 的 。 4、 举 3 个例子说明计算机图形学的应用。 答 : 事务管理中的交互绘图 应用图形学最多的领域之一是绘制事务管理中的各种图形。通过从简明的形式呈现出数据的模型和趋势以增加对复杂现象的理解,并促使决策的制定。 地理信息系统 地理信息系统是建立在地理图形基础上的信息管理系统。利用计算机图形生成技术可以绘制地理的、地质的以及其 它 自然现 象的高精度勘探、测量图形。 计算机动画 用图形学的方法产生动画片,其形象逼真、生动,轻而易举地解决了人工绘图时难以解决的问题,大大提高了工作效率。 5、 计算机绘图有哪些特点? 答:见课本 的 。 6、 计算机生成图形的方法有哪些? 答 :计算机生成图形的方法有两种:矢量法和描点法。 矢量法:在显示屏上先给定一系列坐标点,然后控制电子束在屏幕上按一定的顺序扫描,逐个“点亮”临近两点间的短 矢量 ,从而得到一条近似的曲线。尽管显示器产生的只是一些短直线的线段,但当直线段很短时,连成的曲线看起来还是光滑的。 描点法 :把显示屏幕分成有限个可发亮的离散点,每个离散点叫做一个像素,屏幕上由像素点组成的阵列称为光栅,曲线的绘制过程就是将该曲线在光栅上经过的那些像素点串接起来,使它们发亮,所显示的每一曲线都是由一定大小的像素点组成的。当像素点具有多种颜色或多种灰度等级时,就可以显示彩色图形或具有不同灰度的图形。 7、 当前计算机图形学研究的课题有哪些? 答: 见课本 的 。 2 8、 简述三维图形生成和输出的流水线? 答:见课本 9、向量图形和点阵图形之间的区别有哪些? 答:通过矢量法产生的图形称为矢量图形或者向量图形,用描点法产生的图形称为点阵图形。 向量图形区别 点阵图形的 特点在于描述图形 几何形状的数学模型及依据此模型生成几何图形的计算机命令 。 向量图形由各个基本图形构成 , 这就要求 各个基本图形有各自独立的信息。 如果 用点阵图形 来 表示一个向量图形 , 构成向量图形的某个基本图形 (如直线段 、 圆弧 等 )的所有点应有一个 信息。 因此 , 在描述一个基本图形时 , 同时要描述其相应的 信息。向量图形最基本的优点是它本身是由精确的数据给出 , 所以可以充分利用各种输出图形设备的分辨率尽可能精确地输出图形 。 也正因 为如此 , 向量图 形 的尺寸可以任意变化而不损失 图形显示 的质量 。 但是向量图形仅适合于描绘简单图形,而点阵图形可以描绘绚烂多彩的复杂图形。 10、 什么 是 虚拟现实技术和可视化 技术 ? 答 :虚拟现实技术:利用计算机生成一种模拟环境,通过多种传感器和设备使用户“投入”到该环境中,实现用户和该环境直接进行交互的技术。例如模拟飞机驾驶舱。 可视化技术: 通过对空间数据场构造中间几何因素,或用图形绘制技术在屏幕上产生二维 图像 。例如分子模型构造。 第二章 1、计算机图形系统有什么特点?有哪些主要功能? 答:课本 图 示了计算机图形系统的组成。计算机图形系统是为了支持应用程序,便于实现图形的输入输出的硬件和软件组合体。没有图形系统支持,就难以实现应用软件的开发。主要功能见课本 。 2、计算机图形系统有哪几种?各有什么特点? 答: 一种分类方法: 交互式图形系统允许操作者以某种方式 (对话方式或命令方式 )来控制和操作图形生成过程,使得图形可以边生成、边显示、边修改,直至符合要求为止。而被动式绘图系统,图形在生成过程中,操作者无法对图形进行实时操作和控制,不具备交互功能,只提供各种图形命令或图形程序库,通过编程获 得所需图形。 另一种分类方法:见课本 ,分为脱机绘图系统、联机绘图系统和交互式绘图系统。 3、阴极射线管由哪些部分组 成?它们的功能分别是什么? 答: 四部分组成:电子枪、聚焦系统、偏转系统和荧光屏,这四部分都在真空管内。电子枪由灯丝、阴极和控制栅极组成。灯丝加热阴极,阴极表面向外发射自由电子,控制栅控制自由电子是否向荧光屏发出,若允许电子通过,形成的电子流在到达屏幕的途中,被聚焦系统(电子透镜)聚焦成很窄的电子束,由偏转系统产生电子束的偏转电场(或磁场),使电子束左右、上下偏转,从而控制 荧光屏上光点上下、左右运动,使得在指定时刻在屏幕指定位置上产生亮点。 4、光栅扫描显示器由哪些部分组成?它们的功能分别是什么? 3 答:见课本 图 展示的组成框图,其后有各部分的介绍及功能。 5、 对于分辨 率 为 1024*1024 的光栅系统,若每一像素 用 8 位和 12 位二进制来表示存储信息,各需多大光栅存储容量 以及显存 ?每一屏幕最多能显示多少颜色?若 R, G, B 灰度都占 8位,其显示颜色的总数是多少? 解 : 1)每一像素用 8位二进制来表示存储信息,所需容量为 1024*1024*1= 202 ( =1色素: 82 =256(项 ) 2)若每一像素用 12位二进制表示存储信息,所需容量为: 1024*1024*202 (=(由于显示卡的显存是按 2 的指数次倍增长的,因此所需显存为 2M) 彩色素 : 122 =4096( 项 ) 3)颜色总数: 28 *28 *28 =224 =16777216(种) 6、 对于 19 英寸显示器,若 X 和 Y 两方向的分辨率相等,即 1024*1024,那么每个像素点的直径是多少? 解: 9 =2102419 =寸) 7、 对于分辨率为 1024 768 的光栅系统,若 调色板设置为真彩色 32 位 ,此时需要显示一个三维图形,各需要多大光栅存储容量以及显 存? 答: 调色板为真彩色 32 位,即意味着像素值的位长为 32 所需容量为 1024*768*32/8*3=9因此所需要的显存为 16M 8、 哪三种坐标系?它们有什么不同?试写出它们之间对应关系? 答: 3 种不同的坐标系。第一种是供应用程序使用的实际世界坐标系统( 称 第二种是 部使用的规范设备坐标系( 称 它的取值范围为 0,1,这是一种既与设备无关也与应用无关 的坐标系;第三种是各工作站物理设备使用的设备坐标系( 称 支持二维对象的图形处理,因此上述 3 个坐标系都是二维坐标系。详见课本图 描述。 9、 输入设备有哪 6 种逻辑功能?请各举出对应的物理设备。 答: 见课本 10、 当前主流的图形软件有哪些? 答: 见课本 。 第三章 1、 编写画一正方形程序,并在其中用不同的颜色画 15 个正方形,每一个都比前一个小。 4 # i,; j=700; ”); 5); i=0;i0; ); 87+j,290,7); 25+j,290,7); 40; 40; ); /处于运动状态的自行车车轮的轴线的绘制 00,w, ,327,562,327); 0); /自行 车行驶动画的实现 i=0; x=y=i=1; if(f=0) x1=y1=x1,); f=dx* x1=y1=y1+x1,); f=f+2*dy* 方法 2: 逆 4 象限 #x0,y0,x1,y1,x2, 9 GA, ); ,0,0,25,25,0); ; ; x0,y0,x1,y1,x2, f=; ,; 1) if(f0) x1=y1=x1,); f=dy*dy* x1=x1+y1=x1,); f=f+2*dx*dx* 方法 3: 顺 1 象限 # /省略了图形初始化的步骤 # # ,; ,; = ( (; dx= dy= n=dx+A B 10 x2,); f; x=x2,y=i=0;i=0) x,); x+,y,1); ; ; /另一种做法是采用课本 表 公式 4. 编一程序用角度 画一圆 /以圆点为圆心,半径为 20 的圆 # ,R=20; x1,y1,xi,=R*8; a=2*; 0,; i=1;对于圆内的点, F(x, y)0, M 在圆外,说明 圆弧更近;当 F(0,则约定取 构造判别式 ( F(1, (1)2+(- 1) 当 p; /通过公有函数调用私有函数 ; ; /其功能是绘制出多边形和各个端点 2); i=0;p; _ /通过公有 函数调用私有函数 ; ; _ /其功能是绘制出多边形和各个端点 2); i=0;i xi=m= T / 示最大的 y 值, 示最底端点的 x 坐标值 m; /m 表示斜率的倒数 ; /定义了 和 中结点的结构体 T ET( ; 0 32/5 6/5 A 10 13 0 38/5 6/5 A 10 12 0 44/5 6/5 A 10 11 0 10 6/5 A 10 10 21 u, T m); n; /覆盖该多边形的扫描线的总数,从 0 开始计数 *a; ; /定义了边表类 ET( n=a=n; i=0;i p, *q; a0; i=1;q; q=p; a; /析构函数负责回收内存空间 T:u, T m) if(p=m, au); au=p; /依次插入结点构建出边表,其中 a1到 a10用于构建 表 /a0用于构建活动 表 (2) 填充函数 实现和主函数的实现 # 22 T & i=1; /i 作为控制变量标识扫描线 i *p,*r; p=ai; r=; p) q=p-p-xi,p-m, ) =q; r=q; if(r-q-q-r-r-q; r=q; if(r-xiq-=q; q-r; q-xir-& r-r=r-if(r-q-r-r-q; r-q; q- p=p- /按照 的大小将当前 中的记录放置到 中 f,*g; if() f=; f- g=f; f=f-j=g-xi;xi;j+) j,i, /把一对相邻结点的 间范围进行填充 if(!= 23 w; s=1; s) z=w=; s=0; w & w-i) z=w; w=w- w) if(z) z-w-=w-w; s=1; /删去 中 i 值已经等于 结点记录 if() u,*v; u=; u) v=u; u=u-v-xi=v-xi+v-m; /用 xi+m 来替代原有的 i+; /进入下一条扫描线 /主函数的实现 &); /图形系统初始化 e=11; ; /于标识填充颜色 ET et(e); 24 ,5,8,4/3); ,5,8,); ,10,15, ,10,4,6/5); /根据初始数据建立边表 e, /调用填充 函数 ; ; 注 第 2 步的实现存在两个问题: (1) 没有实现世界坐标系统 (第 1 象限 )到设备坐标系统的转换,所以显示出来的图形是以上所画图形的倒置,解决方法就是 从世界坐标系统的最高 (2) 由于 m 的取值为分数 (浮点型 ),这就导致像素点坐标值出现浮点型,这样经过取整运算,计算出来的像素点坐标值将可能与多边形填充点真实值之间存在偏差,导致所绘制的图形不完全与实际吻合。 14. 已知多边形各顶点坐标为 (2, 2)(2, 4)(8, 6)(12, 2)(8, 1)(6, 2)及 (2, 2),在用多边形区域填充时,请写出 全部 容。 解:如图所示: 01234567891011120 1 2 3 4 5 6 7 8 9 10 11 12则该多边形的 为: 6 5 4 3 2 1 6 4 4 2 0 12 4 2 3 25 1 该多边形的 针的内容为: (每条扫描线均有 3 行指针链,第 1 行表示将 加入 第 2 行表示从 中删去 yi= 3 行表示 xi=,学生只要写出第 2 行即可 ) 1 2 3 4 2 8 5 8 4 8 5 8 4 8 5 8 4 6 5 12 4 2 0 12 4 2 0 11 4 2 0 2 3 10 4 6 5 12 4 2 0 11 4 2 0 12 4 2 0 11 4 2 0 10 4 2 3 10 4 26 5 6 15. 用扫描线种子填充算法,编写一个填充 多边形 区域的程序。 0204060801001201401601802000 30 60 90 120 150 180 210 240 270 300该测试多边形 的各个端点坐标分别为: A(50, 150), B(50, 100), C(100, 50), D(250, 50), E(200, 150); F(100, 100), G(100, 75), H(175, 135); /* 本程序实现区域填充功能,首先输入多边形顶点的个数,回车, 然后依次输入各顶点的坐标格式如下: 100,123 回车 一定要在中间用逗号隔开噢,输完最后一个点后,屏幕上会依次 画出各条边,最后填充满 程序还不完善,比如颜色值应该用变量表示以易于修改,画多边形 和求种子点 应该做成独立的函数等等,以后再做上吧,这是细节的问题 扫描的次序:先上后下 进栈的次序:先右后左 测试数据: 第一个多边形: A(50, 150), B(50, 100), C(100, 50), D(250, 50), E(200, 150); 第二个多边形: F(100, 100), G(100, 75), H(175, 135); */ 5 3 9 4 8 3 8 4 5 3 9 4 5 3 9 4 8 3 8 4 D C E F G H B 27 # / /定义构造函数 x; y; ; ; /识栈顶指针 /an xx, ; x=y= /an xx, xx=x; yy=y; /x,y) 28 x0,y0,xl,xr,*x0,来标记 x,y 的值 ,录 x 的最左值 ,录 x 的最右值 */ ,; i=0; x,y);/种子像素入栈 0)/如果栈不空则循环 , 0 表示栈空 ; /是一个标记 x,y); /从栈中将栈顶元素弹出 x,y,4); /将该点置色 x0=x+1;/取种子右边的像素 x0,y)!=4)/充右边像素 x0,y,4); x0=; xr=;/再记录一次最右 值,以备后用 x0=(x0,y)!=4)/充左边像素 x0,y,4); x0= xl=;/记录最左值 ,以备后用 y0=y+1;/go 上移一条扫描线 ;/只是一个用来标记的变量 xr0)/查找上一条线的最右值 ,并记录为 if(xr,=4)/看看上一条扫描线最右值是否超出了当前扫描线的坐标范围 xr= /如果超出,则减 1 ;/若 这句执行的话就说明找到了最右值,并在 的 0中判断并退出 0)/找下一条扫描线的最右像素 if(xr,=4) ; yi=(px, ); /; 31 ); ; py=(= 0) 00);/时延,慢慢画 px,,画出多边形 /画完多边形后,栈为空 /y j=(ya+2;/找 Y 的中间值 ,就是第一个种子点的 Y 值 i=0; n=0;/记录入栈个数 /i=90 & 0) x=y= if(0 & 0) x=y= if(0 & 0) x=y= if(0 & 0) x=y= a) /四位编码的实现 if(*(a+1)=1; /右 if(*(a+3)=1; /上 a, b) ,; x1,y1,a); /得到直线第一个端点的编码 x2,y2,b); /得到直线第二个端点的编码 a=0 & *b=0 & *(a+1)=0 & *(b+1)=0 & *(a+2)=0 & *(b+2)=0 & *(a+3)=0 & *(b+3)=0) x1,y1,x2, /若两个端点的编码全为 0,则直线完全可见 a0(b0(a1(b1(a2(b2(a3(b3=0) /两端点四位编码的逻辑乘为 0 (a0=0&a1=0&a2=0&a3=0) /第一个端点不在窗口内,求与窗口交点 a,x1,y1,x2, ; (b0=0&b1=0&b2=0&b3=0) /第二个端点不在窗口内 , 求与窗口交点 b,x1,y1,x2, ; if(1&1) /说明两个端点均不在窗口内 , 直线与窗口有两个交点 if(1&0) x2, /说明第一个端点不在窗口内 , 第二个在 , 36 直线与窗口有一个交点 if(0&1) x1,y1, /说明第二个端点不在窗口内 , 第一个在 ,直线与窗口有一个交点 x1,y1,x2,%d%d%d%d,& /读入直线两个端点的坐标 a4=0,0,0,0; b4=0,0,0,0; /分别初始化两个端点的编码数组 ); /图形初始化 ); w1,w3,w2, /画出窗口 ); x1,y1,x2, /画出裁剪之前的直线 ; ; /清除屏幕 ; ); w1,w3,w2, /再次画出窗口 ); x1,y1,a,x2,y2,b); /画出保留在窗口内的直线 ; ; /关闭图形系统 20. 编一程序实现直线中点分割 裁 剪法 解: 如图所示: (P1(P2( 37 #e 1 /(单位像素 ) x3,y3,x4, /定义了中点坐标, x3,于保存中间结果 x4=y4= /保留 光标位置 x2|(y2 /说明直线段完全被排斥于窗口之外 x1+2; y1+2; /求中点坐标 Pm & x2|(& y2 /如果 完全排斥在窗口外 x2=y2= /将 代 x1=y1= /否则 将 代 (#I /*定义按键 */ #*以下 4个键,依次是上 下 左 右 */ #_ 0 45 #_ #_ 0 #_*以下 2个键,依次是 A, D*/ #_ 0_0*以下 6个键,依次是 U, J, I, K, O, L*/ #_ 0_ 0_ 0_ 0_ 0_ 0*绕 44 = 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ; /*绕 44 = 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ; /*绕 44 = 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ; /*平移矩阵 */ 4 = 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ; /*透视投影变换矩阵 */ 4 = 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 ; 46 /*实现两个矩阵 : 输入参数 : *指向第一个矩阵 第一个矩阵的行数 第一个矩阵的列数 余下三个参数类推 ; 向运算结果的 */ i, j, m, n; *= n); ; 4); /*申请内存空间 , = 第一个矩阵的行数 * 第二个矩阵的列数 * 4(= */ *具体算法详见如下代码 */ i = 0; i i+) n = 0; n n+) 0; j = 0; j j+) = (*(i*j) * (*(j*n); *() = /*转换成齐次坐标矩阵 */ i, j; i =

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论