计算机图形学基础课后部分习题答案

  • 格式:doc
  • 大小:114.00 KB
  • 文档页数:9

- 1 - 计算机图形学基础

第一章

1.名词解释:

图形:从客观世界物体中抽象出来的带有颜色信息及形状信息的图和形。

图像:

点阵法:是用具有灰度或颜色信息的点阵来表示的一种方法。

参数法:是以计算机中所记录图形的形状参数与属性参数来表示图像的一种方法。

2.图形包括那两方面的要素,在计算机中如何表示他们?

构成图形的要素可以分为两类:一类是刻画形状的点、线、面、体等几何要素;另一类是反映物体本身固有属性,如表面属性或材质的明暗、灰度、色彩等非几何要素。

3.什么叫计算机图形学?分析计算机图形学,数字图像处理和计算机视觉学科间的关系。

计算机图形学是研究怎样利用计算机来显示、生成和处理图形的原理、方法和技术的一门学科。【关系图在课本第一页】

4,有关计算机图形学的软件标准有哪些?

计算机图形核心系统(GKS)及其语言联编、计算机图形元文件(CGM),计算机图形接口(CGI),基本图形转换规范(IGES)、产品数据转换(STEP)

6.试发挥你的想象力,举例说明计算机图形学有哪些应用范围,解决的问题是什么?

【具体参照课本第5页】

第二章

1.名词解释

LCD: 就是Liquid Crystal Display,它是利用液晶的光电效应,通过施加电压改变液晶的光学特性,从而造成对入射光的调剂,使通过液晶的透射光或反射光受所加电压的控制,达到显示的目的。

LED: 即 Liquid-Emitting Diode, 采用二极管激发的光来显示图像。

随机扫描:采用随机定位的方式控制电子束运动

光栅扫描:示器显示图形时,电子束依照固定的扫描线和规定的扫描顺序进行扫描。电子束先从荧光屏左上角开始,向右扫一条水平线,然后迅速地回扫到左边偏下一点的位置,再扫第二条水平线,照此固定的路径及顺序扫下去,直到最后一条水平线,即完成了整个屏幕的扫描。

刷新:刷新是经过一段时间后,信息可能丢失,需要重写,为了使信息储存更长的时间,必须不断的刷新每个储存单元中储存的信息,也就是将各储存单元中的数据读出之后,再写回到元单元中,对各储存单元中的电容器进行充电. - 2 - 刷新频率:刷新率是指电子束对屏幕上的图像重复扫描的次数。

屏幕分辨率:通常用水平方向上的光点数与垂直方向上的光点数的乘积来表示。【39页】

显示分辨率:他是计算机显示控制器能够提供的不同显示模式下的分辨率。【39页】

存储分辨率:

2.一个交互式计算机图形学系统必须有哪几种功能?其结构如何?

一个交互式计算机图形系统应具有计算、存储、交互、输入和输出等5肿功能。

结构【详见16页】

3.试列举出你所知道的图形输入与输出设备

5.阴极射线管有哪几部分组成?他们的功能分别是什么??

阴极射线管CRT由电子枪、偏转系统及荧光屏三个部分组成。

功能【详见课本24—27页】

6.简述什么叫桶形失真?如何校正?

桶形失真是由于光线的倾斜度大引起的,与球差和像散不同,失真不破坏光束的同心性,从而不影响像的清晰度。失真表现在像平面内图形的各部分与原物不成比例。畸变的情况与光阑的位置有关。

校正:

一是使产生偏转磁场的锯齿形成电流预先产生一些失真;二是故意将偏转磁场做成略有不均匀性,接近管轴中央处略强,周围略弱。

9.简述光栅扫描图形显示器的工作原理

工作原理:在这种显示器中,电子束的运动轨迹是固定的。即从左到右、自上而下扫描荧光屏,来产生一幅光栅。特点:由于图形是以点阵的形式存储在帧缓冲器中。所以光栅扫描显示器的电子束按从上到下、从左到右的顺序依次扫描屏幕,来建立图形。【课本30页】

11.基于光栅扫描的图形显示子系统由哪几个逻辑部件组成?他们的功能分别是什么?【36】

帧缓冲存储器和显示控制器。

功能:帧缓冲存储器就是用来存储像素颜色值的存储器。显示控制器功能是依据设定的显示工作方式,自主的,反复不断的读取帧缓存中的图像点阵数据,将他们转换成R,G,B三色信号并配以同步信号送至显示器。

14.图像的硬拷贝设备有哪些?简述其各自的特点。

有打印机,绘图仪

特点:【43页】

第三章

2.什么是用户模型?设计一个好的用户接口要涉及哪些因素?

用户模型是用户接口设计的基础,他提供给用户有关他所处理的对象以及作用于这些对象的处理过程的一个概念模型。

一个接口应具备(1)易于被用户理解并接受,(2)易于操作和使用,(3)高效率,可靠性 - 3 - 和实用性。【50页】

9.举例说明什么是请求方式、取样方式、事件方式及其组合方式。

【详见课本57页】

第四章

1.名词解释

规则对象:是指能用欧式几何进行描述的形体,如点、直线、曲线、平面、曲面或实体。

不规则对象:是指不能用欧式几何进行描述的形体

几何造型:规则对象的造型称几何造型。

图形信息:构成对象的点,线,面的位置和几何尺寸,以及他们相互间的关系等都是图形信息。

非图形信息:表示对象图形的线型,颜色,亮度以及供模拟和分析用的质量,比重,体积等数据,是有关对象的非图形信息。

几何信息:一般指形体在欧式空间中的位置和大小。

拓扑信息:是形体各分量(点、线、面)的数目及相互间的连接关系。

刚体运动:是指不改变图形上任意两点间的距离,也不改变图形的几何性质。

2.欧式空间中的几何元素包含哪些?如何表示?

点,线,面,环,体【72-73】

3.利用正则集的概念简述实体的定义

通过对边界表示的物体做正则集合运算可构造新的边界表示的物体。

对具有平面边界、曲面边界的物体进行集合运算的算法很多,算法的大致过程包括四个阶段,即:

相交检测:

预检查两个物体是否相交。

计算交线:

计算物体表面之间的交线。

表面分类:

对物体的表面分类。

结果表示:

获得正则集合运算结果物体的边界面之后,依据该边界表示所采用的数据结构,建立其边界表示。

5.简单多边形的欧拉公式满足什么条件?

简单多面体的顶点数V,边数E,和面数F满足 V-E+F=2,多面体满足:V-E+F-H=2(C-G),其中H表示多面体表面上孔的个数,G表示贯穿多面体的孔的个数。

6.试比较线框模型和实体模型的优缺点。

线框模型存在着几个缺陷:二义性,容易构造出无效形体,不能正确表示曲面信息,无法进行图形的线面消隐,加重用户的输入负担,难以保证数据的统一性和有效性。

构造实体几何法的优点:可以构造出多种不同的符合需要的实体。问题:求交困难,CSG树不能显式地表示形体的边界

解决:光线投射(Ray-casting)算法

- 4 -

第五章

1.名词解释

扫描转换:图形生成算法针对后一种图形的光栅化的情形,给出在光栅扫描显示器等数字设备上确定一个最佳逼近于图形的像素集的过程称图形的扫描转换。

八分法画圆:要得到整个圆的扫描转换像素集,只要扫描转换八分之一圆弧即可,称为八分法画圆。

走样:用离散量表示连续量而引起的失真,叫走样。

反走样:为了提高图形的显示质量,需要减少或消除走样现象。用于减少或消除走样的技术称为反走样。

2.分别利用DDA算法,中点Bresenham算法和Bresenham算法扫描转换直线段p1p2,其中p1为(0,0),p2为(8,6)

DDA算法:

void CMainFrame::OnDdaline()

{

// TODO: Add your command handler code here

CDC* pDC=GetDC();

int xa=0,ya=0,xb=8,yb=6,c=RGB(255,0,0);

int x,y;

float dx, dy, k;

dx=(float)(xb-xa),dy=(float)(yb-ya);

k=dy/dx,y=ya;

if ((0

{

for(x=xa;x<=xb;x++)

{pDC->SetPixel(x,int(y+0.5),c);

y=y+k;}

}

if(abs(k)>=1)

{

for(y=ya;y<=yb;y++)

{pDC->SetPixel(int(x+0.5),y,c);

x=x+1/k;}

}

ReleaseDC(pDC);

}

Bresenham算法:

void CMainFrame::OnBresenhamline()

{

// TODO: Add your command handler code here

CDC*pDC=GetDC(); - 5 - int xa=0,ya=0,xb=8,yb=6,c=RGB(0,255,0);

float a,b,d1,d2,d,x,y;

a=ya-yb,b=xb-xa,d=2*a+b;

d1=2*a,d2=2*(a+b);

x=xa,y=ya;

pDC->SetPixel(x,y,c);

while(x

{

if (d<0)

{

x++,y++,d+=d2;

}

else

{

x++,d+=d1;

}

pDC->SetPixel(x,y,c);

}

ReleaseDC(pDC);

}

中点画线:

void CMainFrame::OnMidpointline()

{

// TODO: Add your command handler code here

CDC*pDC=GetDC();

int x1=0,y1=0,x2=8,y2=6,c=RGB(0,0,255);

int i,s1,s2,interchange;

float x,y,deltax,deltay,f,temp;

x=x1;

y=y1;

deltax=abs(x2-x1);

deltax=abs(y2-y1);

if (x2-x1>=0) s1=1;else s1=-1;

if (y2-y1>=0) s2=1;else s2=-1;

if (deltay>deltax)

{

temp=deltax;

deltax=deltay;

deltay=temp;

interchange=1;

}

else interchange=0;