计算机图形学教程课后习题参考答案

  • 格式:docx
  • 大小:161.37 KB
  • 文档页数:40

第一章

1、 试述计算机图形学研究的基本内容

答:见课本P5-6页的1.1.4节;

2、 计算机图形学、图形处理与模式识别本质区别是什么请各举一例说明;

答:计算机图形学是研究根据给定的描述,用计算机生成相应的图形、图像,且所生成的图形、图像可以显示屏幕上、硬拷贝输出或作为数据集存在计算机中的学科;计算机图形学研究的是从数据描述到图形生成的过程;例如计算机动画制作;

图形处理是利用计算机对原来存在物体的映像进行分析处理,然后再现图像;例如工业中的射线探伤;

模式识别是指计算机对图形信息进行识别和分析描述,是从图形图像到描述的表达过程;例如邮件分捡设备扫描信件上手写的邮政编码,并将编码用图像复原成数字;

3、 计算机图形学与CAD、CAM技术关系如何

答:见课本P4-5页的1.1.3节;

4、 举3个例子说明计算机图形学的应用;

答:①事务管理中的交互绘图

应用图形学最多的领域之一是绘制事务管理中的各种图形;通过从简明的形式呈现出数据的模型和趋势以增加对复杂现象的理解,并促使决策的制定;

②地理信息系统

地理信息系统是建立在地理图形基础上的信息管理系统;利用计算机图形生成技术可以绘制地理的、地质的以及其它自然现象的高精度勘探、测量图形; ③计算机动画

用图形学的方法产生动画片,其形象逼真、生动,轻而易举地解决了人工绘图时难以解决的问题,大大提高了工作效率;

5、 计算机绘图有哪些特点

答:见课本P8页的1.3.1节;

6、 计算机生成图形的方法有哪些

答:计算机生成图形的方法有两种:矢量法和描点法;

①矢量法:在显示屏上先给定一系列坐标点,然后控制电子束在屏幕上按一定的顺序扫描,逐个“点亮”临近两点间的短矢量,从而得到一条近似的曲线;尽管显示器产生的只是一些短直线的线段,但当直线段很短时,连成的曲线看起来还是光滑的;

②描点法:把显示屏幕分成有限个可发亮的离散点,每个离散点叫做一个像素,屏幕上由像素点组成的阵列称为光栅,曲线的绘制过程就是将该曲线在光栅上经过的那些像素点串接起来,使它们发亮,所显示的每一曲线都是由一定大小的像素点组成的;当像素点具有多种颜色或多种灰度等级时,就可以显示彩色图形或具有不同灰度的图形;

7、当前计算机图形学研究的课题有哪些

答:见课本P10-11页的节;

8、简述三维图形生成和输出的流水线

答:见课本P13页1.5.6.节;

9、向量图形和点阵图形之间的区别有哪些

答:通过矢量法产生的图形称为矢量图形或者向量图形,用描点法产生的图形称为点阵图形;向量图形区别点阵图形的特点在于描述图形几何形状的数学模型及依据此模型生成几何图形的计算机命令;向量图形由各个基本图形构成,这就要求各个基本图形有各自独立的信息;如果用点阵图形来表示一个向量图形,构成向量图形的某个基本图形如直线段、圆弧等的所有点应有一个信息;因此,在描述一个基本图形时,同时要描述其相应的信息;向量图形最基本的优点是它本身是由精确的数据给出,所以可以充分利用各种输出图形设备的分辨率尽可能精确地输出图形;也正因为如此,向量图形的尺寸可以任意变化而不损失图形显示的质量;但是向量图形仅适合于描绘简单图形,而点阵图形可以描绘绚烂多彩的复杂图形;

10、什么是虚拟现实技术和可视化技术

答:虚拟现实技术:利用计算机生成一种模拟环境,通过多种传感器和设备使用户“投入”到该环境中,实现用户和该环境直接进行交互的技术;例如模拟飞机驾驶舱;

可视化技术:通过对空间数据场构造中间几何因素,或用图形绘制技术在屏幕上产生二维图像;例如分子模型构造;

第二章

1、计算机图形系统有什么特点有哪些主要功能

答:课本2.1.1的图2

2、计算机图形系统有哪几种各有什么特点

答:一种分类方法:交互式图形系统允许操作者以某种方式对话方式或命令方式来控制和操作图形生成过程,使得图形可以边生成、边显示、边修改,直至符合要求为止;而被动式绘图系统,图形在生成过程中,操作者无法对图形进行实时操作和控制,不具备交互功能,只提供各种图形命令或图形程序库,通过编程获得所需图形; 另一种分类方法:见课本2.1.3节,分为脱机绘图系统、联机绘图系统和交互式绘图系统;

3、阴极射线管由哪些部分组成它们的功能分别是什么

答:CRT由四部分组成:电子枪、聚焦系统、偏转系统和荧光屏,这四部分都在真空管内;电子枪由灯丝、阴极和控制栅极组成;灯丝加热阴极,阴极表面向外发射自由电子,控制栅控制自由电子是否向荧光屏发出,若允许电子通过,形成的电子流在到达屏幕的途中,被聚焦系统电子透镜聚焦成很窄的电子束,由偏转系统产生电子束的偏转电场或磁场,使电子束左右、上下偏转,从而控制荧光屏上光点上下、左右运动,使得在指定时刻在屏幕指定位置上产生亮点;

4、光栅扫描显示器由哪些部分组成它们的功能分别是什么

答:见课本P21页图所展示的组成框图,其后有各部分的介绍及功能;

5、对于分辨率为10241024的光栅系统,若每一像素用8位和12位二进制来表示存储信息,各需多大光栅存储容量以及显存每一屏幕最多能显示多少颜色若R,G,B灰度都占8位,其显示颜色的总数是多少

解:

1每一像素用8位二进制来表示存储信息,所需容量为102410241=202Byte=1MB

彩色素:82=256项

2若每一像素用12位二进制表示存储信息,所需容量为:10241024=202Byte =

由于显示卡的显存是按2的指数次倍增长的,因此所需显存为2M

彩色素:122=4096 项

3颜色总数:282828=224种 6、对于19英寸显示器,若X和Y两方向的分辨率相等,即10241024,那么每个像素点的直径是多少

解: 210244.25*19=mm或2102419=英寸

7、对于分辨率为1024×768的光栅系统,若调色板设置为真彩色32位,此时需要显示一个三维图形,各需要多大光栅存储容量以及显存

答:调色板为真彩色32位,即意味着像素值的位长为32

所需容量为102476832/83=9MB 因此所需要的显存为16M

8、GKS有哪三种坐标系它们有什么不同试写出它们之间对应关系

答:GKS有3种不同的坐标系;第一种是供应用程序使用的实际世界坐标系统World Coordinate System,简称 WC;第二种是GKS内部使用的规范设备坐标系Normalized Device Coordinate,简称NDC,它的取值范围为0,1,这是一种既与设备无关也与应用无关的坐标系;第三种是各工作站物理设备使用的设备坐标系Device Coordinate System,简称DC;GKS只支持二维对象的图形处理,因此上述3个坐标系都是二维坐标系;详见课本图的描述;

9、GKS中输入设备有哪6种逻辑功能请各举出对应的物理设备;

答:见课本2.4.5.节;

10、当前主流的图形软件有哪些

答:见课本2.6.3节;

第三章

1、编写画一正方形程序,并在其中用不同的颜色画15个正方形,每一个都比前一个小;

include“” include“”

void main

{

int i,color=0,ls=0;

int j=700;

int gdriver=VGA;

int gmode=VGAHI;

initgraph&gdriver,&gmode,””;

setbkcolor15;

fori=0;i<225;i=i+15, j=j-30

{ setcolorcolor;

bari,i,j,j;

color++; ls++;

}

getch;

closegraph;

}

2、用不同的线形绘制题1中的图形

include“”

include“” 3-1批改说明;

必须至少包含""

initgraph&gdriver,&gmode,"";

必须包含15个正方形,一般用for循环,也可能用到while等; void main

{

int i,color=1,ls=0;

int j=700;

int gdriver=VGA;

gmode=VGAHI;

initgraph&gdriver,&gmode,””;

setbkcolor15;

fori=0;i<=225;i=i+15, j=j-30

{

setcolorcolor; 为什么说直线生成算法是二维图形生成技术的基础

答:无论什么复杂图形,它们都是由直线段和曲线段组成三维图形经投影后最终变成了二维图形,而图形设备显示曲线段时,最终还是将曲线段转化成一系列直线段逼近表示的;因此,所有图形都可以看成是由直线段组成的;可参考课本图;

2. 根据DDA画直线算法,遍一程序求0,0到4,12和0,0,到12,4的直线

include “”

include “”

void DDA_Lineint x1,int y1,int x2,int y2

{

float increx,increy,x,y,length;

int i; 3-2批改说明;

注意查看3_1部分内容

3-3批改说明;

必须至少包含""

initgraph&gdriver,&gmode,""; ifabsx2-x1>absy2-y1

length=absx2-x1;

else

length=absy2-y1;

increx=x2-x1/length;

increy=y2-y1/length;

x=x1;

y=y1;

fori=1;i<=length;i++

{

putpixelx,y,1;

x=x+increx;

y=y+increy;

}

}

void main

{

int driver=DETECT,mode=0;

initgraph&driver,&mode,””;

int x1=0,y1=0,x2=4,y2=12;

int x3=12,y3=4;

DDA_Linex1,y1,x2,y2;