1、|第一章1、 试述计算机图形学研究的基本内容?答:见课本 P5-6 页的 1.1.4 节。2、 计算机图形学、图形处理与模式识别本质区别是什么?请各举一例说明。答:计算机图形学是研究根据给定的描述,用计算机生成相应的图形、图像,且所生成的图形、图像可以显示屏幕上、硬拷贝输出或作为数据集存在计算机中的学科。计算机图形学研究的是从数据描述到图形生成的过程。例如计算机动画制作。图形处理是利用计算机对原来存在物体的映像进行分析处理,然后再现图像。例如工业中的射线探伤。模式识别是指计算机对图形信息进行识别和分析描述,是从图形(图像)到描述的表达过程。例如邮件分捡设备扫描信件上手写的邮政编码,并将编码用图
2、像复原成数字。3、 计算机图形学与 CAD、CAM 技术关系如何?答:见课本 P4-5 页的 1.1.3 节。4、 举 3 个例子说明计算机图形学的应用。答:事务管理中的交互绘图应用图形学最多的领域之一是绘制事务管理中的各种图形。通过从简明的形式呈现出数据的模型和趋势以增加对复杂现象的理解,并促使决策的制定。地理信息系统地理信息系统是建立在地理图形基础上的信息管理系统。利用计算机图形生成技术可以绘制地理的、地质的以及其它自然现象的高精度勘探、测量图形。计算机动画用图形学的方法产生动画片,其形象逼真、生动,轻而易举地解决了人工绘图时难以解决的问题,大大提高了工作效率。5、 计算机绘图有哪些特点?
3、答:见课本 P8 页的 1.3.1 节。6、 计算机生成图形的方法有哪些?答:计算机生成图形的方法有两种:矢量法和描点法。矢量法:在显示屏上先给定一系列坐标点,然后控制电子束在屏幕上按一定的顺序扫描,逐个“点亮”临近两点间的短矢量,从而得到一条近似的曲线。尽管显示器产生的只是一些短直线的线段,但当直线段很短时,连成的曲线看起来还是光滑的。描点法:把显示屏幕分成有限个可发亮的离散点,每个离散点叫做一个像素,屏幕上由像素点组成的阵列称为光栅,曲线的绘制过程就是将该曲线在光栅上经过的那些像素点串接起来,使它们发亮,所显示的每一曲线都是由一定大小的像素点组成的。当像素点具有多种颜色或多种灰度等级时,就
4、可以显示彩色图形或具有不同灰度的图形。7、当前计算机图形学研究的课题有哪些?答:见课本 P10-11 页的 1.4 节。|8、简述三维图形生成和输出的流水线?答:见课本 P13 页 1.5.6.节。9、向量图形和点阵图形之间的区别有哪些?答:通过矢量法产生的图形称为矢量图形或者向量图形,用描点法产生的图形称为点阵图形。向量图形区别点阵图形的特点在于描述图形几何形状的数学模型及依据此模型生成几何图形的计算机命令。向量图形由各个基本图形构成,这就要求各个基本图形有各自独立的信息。如果用点阵图形来表示一个向量图形,构成向量图形的某个基本图形(如直线段、圆弧等)的所有点应有一个信息。因此,在描述一个基
5、本图形时,同时要描述其相应的信息。向量图形最基本的优点是它本身是由精确的数据给出,所以可以充分利用各种输出图形设备的分辨率尽可能精确地输出图形。也正因为如此,向量图形的尺寸可以任意变化而不损失图形显示的质量。但是向量图形仅适合于描绘简单图形,而点阵图形可以描绘绚烂多彩的复杂图形。10、什么是虚拟现实技术和可视化技术?答:虚拟现实技术:利用计算机生成一种模拟环境,通过多种传感器和设备使用户“投入”到该环境中,实现用户和该环境直接进行交互的技术。例如模拟飞机驾驶舱。可视化技术:通过对空间数据场构造中间几何因素,或用图形绘制技术在屏幕上产生二维图像。例如分子模型构造。第二章1、计算机图形系统有什么特
6、点?有哪些主要功能?答:课本 2.1.1 的图 2.1 展示了计算机图形系统的组成。计算机图形系统是为了支持应用程序,便于实现图形的输入输出的硬件和软件组合体。没有图形系统支持,就难以实现应用软件的开发。主要功能见课本 2.1.2 节。2、计算机图形系统有哪几种?各有什么特点?答:一种分类方法:交互式图形系统允许操作者以某种方式(对话方式或命令方式) 来控制和操作图形生成过程,使得图形可以边生成、边显示、边修改,直至符合要求为止。而被动式绘图系统,图形在生成过程中,操作者无法对图形进行实时操作和控制,不具备交互功能,只提供各种图形命令或图形程序库,通过编程获得所需图形。另一种分类方法:见课本
7、2.1.3 节,分为脱机绘图系统、联机绘图系统和交互式绘图系统。3、阴极射线管由哪些部分组成?它们的功能分别是什么?答:CRT 由四部分组成:电子枪、聚焦系统、偏转系统和荧光屏,这四部分都在真空管内。电子枪由灯丝、阴极和控制栅极组成。灯丝加热阴极,阴极表面向外发射自由电子,控制栅控制自由电子是否向荧光屏发出,若允许电子通过,形成的电子流在到达屏幕的途中,被聚焦系统(电子透镜)聚焦成很窄的电子束,由偏转系统产生电子束的偏转电场(或磁场) ,使电子束左右、上下偏转,从而控制荧光屏上光点上下、左右运动,使得在指定时刻在屏幕指定位置上产生亮点。4、光栅扫描显示器由哪些部分组成?它们的功能分别是什么?|
8、答:见课本 P21 页图 2.9 所展示的组成框图,其后有各部分的介绍及功能。5、对于分辨率为 1024*1024 的光栅系统,若每一像素用 8 位和 12 位二进制来表示存储信息,各需多大光栅存储容量以及显存?每一屏幕最多能显示多少颜色?若 R,G,B 灰度都占 8 位,其显示颜色的总数是多少?解:1)每一像素用 8 位二进制来表示存储信息,所需容量为 1024*1024*1= (Byte)20=1MB彩色素: =256(项)22)若每一像素用 12 位二进制表示存储信息,所需容量为:1024*1024*1.5=1.5* (Byte) =1.5MB (由于显示卡的显存是按 2 的指数次倍增长
9、的,因0此所需显存为 2M)彩色素: =4096( 项)123)颜色总数: * * = =16777216(种)88246、对于 19 英寸显示器,若 X 和 Y 两方向的分辨率相等,即 1024*1024,那么每个像素点的直径是多少?解: =0.33(mm)或 =0.013(英寸)2104.59210497、对于分辨率为 1024768 的光栅系统,若调色板设置为真彩色 32 位,此时需要显示一个三维图形,各需要多大光栅存储容量以及显存?答:调色板为真彩色 32 位,即意味着像素值的位长为 32所需容量为 1024*768*32/8*3=9MB 因此所需要的显存为 16M8、GKS 有哪三种
10、坐标系?它们有什么不同?试写出它们之间对应关系?答:G KS 有 3 种 不 同 的 坐 标 系 。 第 一 种 是 供 应 用 程 序 使 用 的 实 际 世 界 坐 标 系 统( World Coordinate System, 简 称 WC) ; 第 二 种 是 GKS 内 部 使 用 的 规 范 设 备 坐 标 系( Normalized Device Coordinate, 简 称 NDC) , 它 的 取 值 范 围 为 0,1 , 这 是 一 种 既 与 设备 无 关 也 与 应 用 无 关 的 坐 标 系 ; 第 三 种 是 各 工 作 站 物 理 设 备 使 用 的 设 备
11、坐 标 系 ( Device Coordinate System, 简 称 DC) 。 GKS 只 支 持 二 维 对 象 的 图 形 处 理 , 因 此 上 述 3 个 坐 标 系都 是 二 维 坐 标 系 。 详 见 课 本 图 3.28 的 描 述 。9、 GKS 中输入设备有哪 6 种逻辑功能?请各举出对应的物理设备。答:见课本 2.4.5.节。10、当前主流的图形软件有哪些?答:见课本 2.6.3 节。第三章1、编写画一正方形程序,并在其中用不同的颜色画 15 个正方形,每一个都比前一个小。#include“graphics.h”#include“conio.h”|void main
12、()int i,color=0,ls=0;int j=700;int gdriver=VGA; int gmode=VGAHI;initgraph(setbkcolor(15);for(i=0;i0;i-,j-)setfillstyle(EMPTY_FILL,0);pieslice(387+j,290,start,end,37);pieslice(525+j,290,start,end,37);start+=40;end+=40;delay(5); /处于运动状态的自行车车轮的轴线的绘制putimage(i-1,200,w,COPY_PUT);line(2,327,562,327);delay
13、(10); /自行车行驶动画的实现 for(i=0;iabs(y2-y1)length=abs(x2-x1);elselength=abs(y2-y1);increx=(x2-x1)/length; increy=(y2-y1)/length; x=x1;y=y1;for(i=1;i1)if(f=0)x1=x1-dx;y1=y1;putpixel(x1,y1,1);f=f-2*dx*(x1-x0)+dx*dx;elsex1=x1;y1=y1+dy;putpixel(x1,y1,1);f=f+2*dy*(y1-y0)+dy*dy;方法 2:逆 4 象限#include “graphics.h“#
14、include “stdlib.h“#include “conio.h“void ZDBJ_ARC(float x0,float y0,float x1,float y1,float x2,float y2);void main()int gdriver=CGA,mode=CGAC0;|initgraph(ZDBJ_ARC(0,0,0,25,25,0);getch();closegraph();void ZDBJ_ARC(float x0,float y0,float x1,float y1,float x2,float y2)float f=0.0,F;float dx=1,dy=1;whi
15、le(abs(y1-y2)1)if(f0)x1=x1;y1=y1-dy;putpixel(x1,y1,1);f=f-2*dy*abs(y1-y0)+dy*dy;elsex1=x1+dx;y1=y1;putpixel(x1,y1,1);f=f+2*dx*abs(x1-x0)+dx*dx;方法 3:顺 1 象限#include“graphics.h” /省略了图形初始化的步骤#include“conio.h”#include “math.h”void main()int x1=5,y1=0,x2=0,y2=5;int x0=0,y0=0;int R=sqrt(x2-x0)* (x2-x0)+(y2
16、-y0)* (y2-y0);int dx=abs(x2-x1);int dy=abs(y2-y1);int n=dx+dy;putpixel(x2,y2,1);int f;AB|int x=x2,y=y2;for(int i=0;i=0)putpixel(x,y-,1);elseputpixel(x+,y,1);getch();closegraph(); /另一种做法是采用课本 P97 页表 4.2 的公式4. 编一程序用角度 DDA 法画一圆 /以圆点为圆心,半径为 20 的圆#include “graphics.h” /省略了图形初始化的步骤#include “conio.h”#inclu
17、de “math.h”void main()int x0=0,y0=0,R=20;int x1,y1,xi,yi;int N=R*8;float a=2*3.14/N;x1=20,y1=0;for(int i=1;i=N;i+)xi=x0+R*cos(i*a)yi=y0+R*sin(i*a);line(x1,y1,xi,yi);x1=xi;y1=yi;getch();closegraph();5. 如果线段端点坐标值不是整数,采用 DDA 算法产生的直线和将端点坐标值先取整后再用 Bressenham 算法产生的直线是否完全相同?为什么? 能否扩充整数 Bressenham 算法使之能够处理当线段端点坐标值不是整数的情况。答:不相同。因为 DDA 算法总是选择x 或者y 中的较大者作为步进的方向,不失一般性,假设选择 x 方向,则 x 方向每前进一个像素点,y 方向前进的像素点个数应该在0, 1区间,但是由于采用了(向上或者向下或者四舍五入 )取整运算,必然会导致某些像素点偏在了真实直线的一侧。而 Bressenham 算法每一步都会根据实际直线与网格的距离来决定下一个像素点的选择,因此所选像素点更加贴近于真实的直线。