当前位置:文档之家› 计算机图形学综合练习及答案

计算机图形学综合练习及答案

计算机图形学综合练习及答案
2011年5月 李向新
第一章 绪论
本章提要
?计算机图形学的概念及研究内容
?计算机图形学的发展
?计算机图形学的应用
?计算机图形学的当前研究课题
本章小结:本章首先介绍了计算机图形学的概念及其研究内容,然后对计算机图形学的发展情况进行了论述,最后对计算机图形学的应用及当前的研究课题进行了说明。通过本章的学习,可以对计算机图形学有个大概的了解。
综合练习一及答案
1.计算机图形学这一术语最早是在_1962_年首次被提出,从而确立了计算机图形学的学科地位.
2.计算机图形学的应用范围包括(A,B,C,D,E,F).
A.计算机艺术 B.计算机辅助设计与制造
C.医疗诊断 D.计算机动画
E.算机辅助教学 F.办公自动化和电子出版技术
3.计算机图形学研究的内容是什么?
答:计算机图形学(Computer Graphics)是研究怎样用数字计算机生成、处理和显示图形的一门学科,是研究用计算机将由概念或数学描述所表示的物体(而不是实物)图像进行处理和显示的过程,是在计算机的帮助下生成图形图像的一门艺术。
4.计算机图形学处理的图形分为哪两种?
答:一类是线条式,它用线段来表现图形。这种图形容易反映客观实体的内部结构,因而适合表示各类工程技术中的结构图。如机械设计中的零件结构图、土木没计中的房屋结构图及各种曲线图等等;另一类是具有面模型、色彩、浓淡和明暗层次效果的、有真实感的图形,这种图形与我们用照相机拍摄的照片相似。它适合于表现客观实体的外形或外貌,如汽车、飞机等的外形设计以及各种艺术品造型设计等。
5.试举例说明你所见到过的计算机图形学的应用实例.
答:如医疗图像诊断,计算机动画等。
第二章 计算机图形系统
本章提要
?计算机图形系统的构成
?计算机图形显示器
?计算机图形输入设备
?计算机图形输出设备
本章小结:本章主要介绍计算机图形系统的构成、计算机图形显示器、计算机图形输入设备、计算形输出设备。介绍了与之相关的图形图像设备的类型和工作原理,以及它们的优缺点。
综合练习二及答案
1.图形系统的基本功能包括:计算、存储、 输入、输出、对话等五方面的功能。
2.图形输出设备主要包括:显示器、绘图仪、打印机等.
3.计算机图像的输入设备包括( A,B,C,D,E,F,G,H).
A.键盘 B.鼠标 C.跟踪球 D.数字化仪
E.图像扫描仪 F.图像扫描仪 G.触摸屏 H.声音系统和视觉系统
4.名词解释: 分辨率 场频 行频
分辨率:分辨率就是屏幕图像的密度。我们可

以把屏幕想象成是一个大型的棋盘,而分辨率的表示方式就是每一条水平线上面的点的数日乘上水平线的数目。分辨率越高,屏幕上所能呈现的图像也就越精细。
场频:场频又称为“垂直扫描频率”,也就是屏幕的刷新频率。指每秒钟屏幕刷新的次数,通常以赫兹(Hz)为单位。
行频:行频指电子枪每秒在荧光屏上扫描过的水平线数量,等于“行数×场频”。行频足一个综合分辨率和场频的参数,其值越大就意味着显示器可以提供的分辨率越高,稳定性越好。
5.光栅扫描显示器和随机扫描显示器在图形显示上有何不同?为什么二者都需要刷新?
答:随机扫描的图形显示器和存储管式的图形显示器都是画线设备,在屏幕卜显示一条直线是从屏幕上的一个可编地址点直接画到另一个町编地址点。光栅扫描式显示器是画点设备,可以看作是一个点阵单元发生器,并可控制每个点阵单元的高度。光栅扫描式显示器可以生成多种灰度和颜色,色彩连续变化具有真实感的图形。
随机扫描显示器是利用电子束在荧光屏上扫描的轨迹来画图的。屏幕采用短余辉荧光粉,南于余辉短.因此为了获得稳定的画面.必须不断地扫描显示文件,即刷新。刷新频率一般为25-50次/秒,既每秒25-50帧。
光栅扫描显示器每秒也要刷新。其原理同彩色CRT的刷新原理。通常刷新频率应为30-50帧,秒。随着刷新频率的降低,会出现闪烁。使图像不闪烁的刷新频率成为临界停闪频率CFF(critical fusion frequency)。决定CFF的因素有:荧光屏的余辉时间,图像亮度及环境的亮度,发射光的波长以及观察者本身。
6.CRT显示器的原理是什么?它的优点和缺点是什么?
答:CRT显示器的原理:CRT一般是利用电磁场产生高速的、经过聚焦的电子束,偏转到屏幕的不问位置轰击屏幕表面的荧光材料而产生可见图形。彩色CRT和单色显示器的不同是由于荧光粉的缘故。
它的优点是:亮度高对比度好、聚焦精确、分辨率高和色彩鲜艳并丰富,缺点是体积大、厚且笨重。
7.液晶显示的原理是什么?它的优点和缺点是什么?
答:液晶显示是将液晶置于两片导电玻璃之间,靠两个电极间电场的驱动,引起液晶分子扭曲的电场效应,以控制光源透射或遮蔽功能,在电源关开之间产生明暗而将影像显示出来,若加上彩色滤光片,则可显示彩色影像。
优点:(1)零辐射、低耗能、散热小。(2)纤薄轻巧。 (3)精确还原图像。 (4)显示字符锐利,画而稳定不闪烁。 (5)屏幕调节方便。
缺点:(1)价格比较贵。(2)液晶显示器的数字接口尚未形成统一标准,带有数字输出的显示卡在市场上并不多见。这样一来,液晶显

示器的关键性的优势却很难充分发挥。(3)可视角度小。(4)相应时间过慢。(5)亮度和对比度低。
第三章 OpenGL编程基础
本章提要
?OpenGL的简介
?OpenGL的应用工具包GLUT
?OpenGL初步鳊程
本章小结:OpenGL是一套应用广泛的高性能计算机图形处理系统,其功能基本上涵盖了计算机图形学所要包括的各个方面的内容。本章对OpenGL的概念、组成及功能进行了介绍。并对OpenGL的应用工具包进行了介绍,最后对OpenGL的编程进行了说明。学习OpenGL的编程,可以有助于更好地理解计算机图形学的有关知识。
综合练习三及答案
1.OpenGL是SGI公司开发的一套高性.能的计算机图彤处理系统,是图形硬件的软件接口,GL代表图形库.
2.GLUT代表OpenGL应用工具包,是一个和窗口系统无关的工具包.它作为AUX库的功能更强的替代品,用于隐藏不同窗口系统API的复杂性。GLUT的子程序的前缀使用字母glut.
3.在OpenGL的命令函数中,核心库的函数以( C )为前缀,编程辅助库的函数的前级为( B ),实用函数库的函数前缀为( D ).
A.glu B.aux C.gl D.glut
4.简要说明OpenGL的概念及其功能.
答:OpenGL所具有的功能基本上涵盖了计算机图形学所要包括的各个方面的内容。包括绘制基本几何图形如点、线、多边形等,实现图形变换如几何变换、观察变换和裁剪,封闭边界内的填充、纹理、反走样等,二次曲面、B6zier曲线曲面和NURBS曲线曲面的生成,消隐处理以及具有光照颜色的真实感图形生成等。
5.简要说明用OpenGL进行编程的主要步骤.
答:用OpenGL进行编程一般包括以下几个部分:(1)定义绘制对象:通常对象绘制于指定的窗口之上。首先必须定义窗口在屏幕上的位置及窗口的大小等属性,然后在窗口上建立坐标系,定义图形在窗口中的生成位置。(2)初始化:即初始化OpenGL中的状态变量,为下一步图形显示做准备T作。包括定义投影类型、定义光照模型及纹理映射等。(3)渲染屏幕图像:按照显示的方位角度等要求绘制并显示图形,将物体的数学描述及状态变量(如颜色、纹理等)变换为屏幕像素。
6.试编一程序绘制GLUT中的三堆茶壶模型,并上机运行.
程序如下:
#include
#include
void init( )
{
glClearColor(1.0,1.0,1.0,1.0);
}
void RenderScene(void)
{
glClear(GL_COLOR_BUFFER_BIT);
/*设值作图颜色为蓝色*/
glColor4f(0.0,0.0,1.0,1.0);
//绘制一个线框茶壶
glutWireTeapot(2.0);
glFlush();
}
void main(int argc, char**argv)
{
glutlnit(&argc,argv);
glutlnitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(200,200);
glutlnitWindowPosition(100,100);
glutCreateWindow("cube

");
init();
glutDisplayFunc(RenderScene);
glutMainLoop();
}
7.编写一个程序,并在一蓝色窗口中绘制一红色的正方形,且正方形大小可随窗口尺寸改变而调整。
#include
#include
void Display(void)
{
glClear(GL_COLOR_BUFFER BIT);
//将作图颜色设为蓝色
glColor3f(0.0f,0.0f,1.0f);
//作一个正方形
glRectf(50.0f, 50.0f, 150.0f, 150.0f);
glFlush();
}
void myinit(void)
{
//将背景颜色设为红色
glClearColor(1.0f,0.0f,0.0f,0.0f);
}
void Myreshape(GLsizeiw, GLsizei h)
{
glViewport(0,0,(GLsizei)w, (GLsizei)h);
glMamxMode(GL_PROJECTION);
glLoadIdentity();
if(w<=h)
gluOrth02D(0.0,200.0,0.0,
200.0*(GLfloat)h/(GLfloat)w);
else gluOrth02D(0.0,200*(GLfloat)w/(GLfloat)h,
0.0,200.0);
glMatrixMode(GL_MODELVIEW);
}
void main(void)
{
glutlnitDisplayMode(GLUT SINGLE | GLUT_RGB);
glutlnitWindowSize(200,200);
glutlnitWindowPosition(150,150);
glutCreateWindow(“GLRect”);
myinit();
glutDisplayFunc(Display);
glutReshapeFunc(Myreshape);
glutMainLoop();
}
第四章 基本图元的生成
本章提要
?基本绘图元素
?直线的生成
?圆的生成
?椭圃的生成
?区域填充
?OpenGL中基本几何图形的绘制
本章小结: 基本的几何图形是构成各种复杂图形的基础。本章首先对计算机图形学的各种基本图开的扫描转换算法进行了介绍,包括点、直线、圆和椭圆以及区域填充等,包括其原理和基本的算法。然后对OpenGL中的基本几何图形的生成进行了介绍,并给出了一些例子。
综合练习四及答案
1.对图形的扫描转换,一般可以分为两个步骤,先确定有关像素的集合,然后再对像素进行操作。
2.对于端点坐标为Pl(x1,y1)和P2(x2,y2)的直线段,线段的方程可表示为
3.在对中心落在坐标原点的标准椭圆进行扫描转换时,已知像素点(x,y)位于椭圆之上,则根据椭圃的对称性,可以确定像素点( A、B、D )也位于椭圆之上.
A.(-x,y) B.(x,-y) C.(y,x) D.(-x,-y)
4.名词解释:光栅化 八分法画圃 区域填充 种子填充 八向连通区域
光栅化:由显示器的原理我们知道,光栅图形显示器司以看成一个像素的矩阵,每个像素可以用一种或多种颜色显示。在光栅显示器上的任何一种图形,实际上都是一些具有一种或多种颜色的像素的集合。因此,确定一个像素集合及其颜色,用于显示一个图形的过程,称为图形的扫描转换或光栅化。
八分法画网:由于网的形状在每个象限中是相似的,生成圆时考虑网的对称性可以减少计算量。圆中八分之一圆上的一点(x,y)根据对称关系被映射到其他八分之七的圆上。利用园的这种对称性我们只需要计算

从x=0到x=y这段圆弧就可以得到整个圆的所有像素点的位置了。
区域填充:区域通常南一个封闭的轮廓来定义,处于一个封闭轮廓线内的所有像素点即构成了一个区域。所调用区域填充就是将区域内的像素置成的颜色值或图案。区域填充可以分为两步进行,第一步先确定需要填充哪些像素;第二步确定用什么颜色值来进行填充。
种子填充:在进行区域填充时,首先假设在多边形的区域内部,至少有一个像素点(称为种子)是已知的,然后算法开始搜索与种子点相邻且位于区域内的其他像素。如果相邻点不在区域内,那么就达到了区域的边界;如果相邻点在区域内,那么这一点就成为新的种子点,然后继续递归地搜索下去。
八向连通区域:八向连通区域指的是区域内每一个像素可通过上、下、左、右、左上、左下、右上、右下八个方向的移动组合来到达。
5.一条直线的两端点为(0,3)和(5,13),计算当x从0变到5时,y所对应的值.
答:直线的斜率为k=Δy/Δx=13-3/5=2。直线在y轴上的截距为3,则直线方程为:y=2x+3
则可求出x从0变到5时直线上的点为(0,3),(1,5), (2,7),(3,9),(4,11),(5,11)。
6.写出使用级坐标法扫描转换圆的步骤。
答:对于园的极坐标表示为:
x=xc+rcosθ
y=yc+rsinθ
可按以下步骤进行:
(1)设置初始变量,圆心坐标(xc,yc),半径r,θ:0—>π/4;步长为d。
(2)测试θ是否大于π/4,如是,则停止。
(3)计算坐标值。
x=rcosθ
y=rsinθ
(4)根据圆的对称性,对当前坐标(x,y),作出8个圆上的点:
plot(x+xc, y+yc); plot(y+xc,x+yc)
plot(-x+xc, -y+yc); plot(-y+xc,-x+yc)
p1ot(-y+xc, x+yc); plot(y+xc,-x+yc)
plot(-x+xc, y+yc); plot(x+xc,-y+yc)
(5)角度θ递增:θ=θ+d。
(6)转步骤(2)。
7.写出用数值微分法扫描转换一条直线的程序,其中直线的斜率大于1.
答:已知直线的两端点(x0,y0),(xl,y1),其中y0void DDALine(int x0, int y0, int xl, int y1)
int x0,y0,xl, yl;
{
int x;
float dx, dy, k, y;
dy=yl-y0;
dx=xl-x0;
k=dx/dy;
x=x0;
for(y=y0); y<=y1; y++)
{
putpixel(int(x+0.5), y);
x=x+k;
}
}
8.写出中点画线法的步骤,并上机实现。
答:其步骤如下:
(1)设初值:已知直线的起点和终点分别为(x0,y0)和(x1,y1),设x=x0,y=y0,a=y0-yl,b=x0-xl,d=2a+b。
(2)判断终止条件x>xl,如是.则终止。
(3)作出当前像素。
putpixel(x,y);
(4)计算下一像素点。
当d<0时, d=2*(a+b) x=x+1 y=y+l
当d≥0时, d=2*a x=x+l y=y
(5)转步骤(2)。
程序参见4.2.3节
9.写出用Bresenham算法扫描转换圆的步骤,并编程

上机实现.
答:步骤如下:
(1)设初值:已知圆心坐标(xc,yc),半径为r;
设x=0,y=r,d=3-2r。
(2)测试终止条件,x>y,如是,则终止。
(3)根据圆的对称性,对当前坐标(x,y),作出8个圆上的点:
plot(x+xc, y+yc); plot(y+xc,x+yc)
plot(-x+xc, -y+yc); plot(-y+xc,-x+yc)
p1ot(-y+xc, x+yc); plot(y+xc,-x+yc)
plot(-x+xc, y+yc); plot(x+xc,-y+yc)
(4)计算下一像素位置。
如果d≥0,则;d=d+4(x-y)+l0 x=x+l y=y-1
如d<0,则: d=d+4x+6 x=x+l y=y
(5)转步骤(2)。
程序略.参见4.3.2节。
10.写出中点椭圆算法的步骤,并上机实现.
答:其步骤如下:
(1)设初值:已知椭圆长半轴为a,短半轴为b;设x=0,y=b,d=b2+a2(-b+0.25)。
(2)测试上半部分终止条件:b2(x+1)>a2(y-0.5),如满足,则转(6)。
(3)根据对称性,作出椭圆上四个点位置:
putpixel(x,y); putpixel(-x,y);
putpixel(x,-y); putpixel(-x,-y);
(4)计算下一像素位置。
如果d≥0, 则:d=d+b2(2x+3)+a2(-2y+2)
x=x-l y=y-1
如果d<0, 则:d=d+b2(2x+3)2 , x=x+1 y=y
(5)转步骤(2)。
(6)用上半部分计算的最后的点(x,y),计算初值:d=b2(x+0.5)2+a2(yp-1)2-a2b2
(7)测试下半部分终止条件:y≥0,如满足,则终止。
(8)根据对称性,作出椭圆上四个点位置:
putpixel(x,y); putpixel(-x,y);
putpixel(x,-y); putpixel(-x,-y);
(9)计算下一像素点。
如果d≥0.则 d=d+a2(-2y+3), x=x y=y-1
如果d(10)转步骤(7)。
程序参见4.4.2节。
11.在计算机上绘制各种点、线与多边形,并上机实现.
参见4.6节。
第五章 二维图形变换
本章提要
?基本几何变换
?几何变换的矩阵表示
?复合变换
?二堆观察
?二堆图形裁剪
?OpenGL中的二维图形变换
本章小结:图形变换是计算机图形学的基本内容之一,本章中对二维图形的各种变换的原理与方法进行了介绍,包括几何变换、观察变换与二维图形的裁剪等。然后对OpenGL中的二维图形变换进行了介绍,并给出了实现二维图形几何变换的程序。
综合练习五及答案
1.将二堆坐标(x,y)表示为三元组的坐标形式(xh,yh,h)称为 齐次坐标 表示法,其中二者之间的关系满足 x=xh/h,y=yh/h 。
2.通常我们把世界坐标系中要显示的区城称为窗口,其映射到显示设备上的坐标区域称为视区。
3.通常图形在方向、尺寸方面的变化是通过图形的( A )来完成的,而要将窗口内的内容在视区中显示出来,必须经过图形的( B )来完成.
A.几何变换 B.观察变换 C.裁剪
4.简述二维现察流程.
答:观察变换可经过以下几个步骤来完成。首先,在世界坐标系中生成图形;其次对世界坐标系

中的窗口区域进行裁剪,得到要显示的内容;然后进行从窗口到视区的变换,即将世界坐标系中的窗口图形转换到规程化的设备坐标系的视区中;最后,将规格化设备坐标系描述的图形变换到设备坐标系中进行显示。此即为二维观察的变换流程,参见5.4.2节。
5.已知平面上一任意直线P1(x1,y1)和P2(x2,y2),试推导将其通过变换与y轴重合的变换矩阵。
答:可由以下步骤完成:
(1)将一端点P1(xl,y1)平移至坐标原点,变换矩阵为:

(2)将直线绕原点旋转,使端点P2(x2,y2)与y轴重合:

α为直线与y轴所成夹角。A=arctg(x2-x1)/(y2-y1),则变换矩阵:

6.证明两个连续的旋转变换R(θ1)和R(θ2)满足关系:
证明:
所以:
7.写出关于直线L的反射变换矩阵,其中L与x轴的正向成θ角,与y轴交于(0,b)。
答:可由以下几步完成:
(1)将直线与y轴的交点平移到原点。

(2)将直线旋转-θ角与x轴重合。

(3)作关于x轴的反射变换。

(4)将直线旋转θ角。

(5)将原点移回(O,b)。

则关于该直线的反射变换矩阵表示为:

8.设已知一直线段两端点为Pl(-2,3)和P2(3,0),窗口边界为:x=±1.y=±1
写出其端点编码,并求出直线与窗口交点.编程实现其编码剪裁算法.
答:对于端点Pl(-2,2),位于窗口左上方,编码为1001。对于P2(3,O),位于窗口右侧,编码为0010。直线的参数方程为:
y=y1+k(x-x1)=2-2(x+2)/5
或:
x=x1+(y-y1)/k=-2-5(y-2)/2
代入窗口边界,得到其交点坐标为(-1,8/5),(1,4/5),(11/2,-1),(1/2,1)。
程序参见5.5.2节。
9.写出粱友栋_Barsky裁剪算法的过程,并编程实现.
答:梁友栋-Barsky算法的步骤如下:
(1)输入直线两端点坐标Pl(xl,y1)和P2(x2,y2),及裁剪窗口的四条边界的坐标xl,xr,yb和yt。
(2)设初始化参数ul=0,u2=l。
(3)计算四条裁剪边界的参数值p,q。对于p<0时的参数值ua,ub.用于更新u1的值,ul=max(ua,ub,0);对于p>O时的参数值ua,ub,用于更新u2的值.u2=min(uc,ud,1)。
(4)当p=0时,如q<0,则舍弃。
(5)判断是否ul>u2,如是,则舍弃。
(6)得到参数值ul,u2,并根据直线参数公式得到新的端点坐标,画出直线。
程序参见5.5.2节。
10.编程实现对一多边形的平移、比例和旋转变换.
答:参见5.6节。

第6章 交互式绘图技术
本章提要
?人机交互界面技术及其特点
?数据输入设备及输入处理
?交互式绘图技术
?OpenGL中的交互式绘图技术
本章小结:在本章中,初步介绍了交互式绘图系统中的人机交互界面技术及其特点、数据输入设备及其输入处理方法、交互式绘图技术和OpenGL中的交互式绘图技术。并举例说明了OpenGL中的交互式绘图技术,以

便让读者有一个更加清晰的认识。
综合练习六及答案
1.基本的交互式绘图技术可分为构图技术与拾取技术两类.其中拾取图形的方法有两种:一种是利用区域框,另一种是利用鼠标的定选法。
2.交互式图形系统的基本原则有(A、C、D、E).
A.窗口资源控制 B.基本模型 c.探作的简单化处理 D.界面的亲和度及操作的多样化服务 E.信息反馈
3.以下技术中属于交互式构图技术的有(A、B、D、E、F).
A.定位 B.图形回显技术 c.拾取技术
D.旋转法 E.约束法 F.拖动技术
4.名词解释:
绝对坐标设备 相对坐标设备 回显技术 三堆定位技术 三维定向技术
绝对坐标设备: 绝对坐标设备是设定屏幕上一点为绝对原点,利用相对绝对原点位置的定位坐标来确定屏幕光标或某点位置的定位设备。
相对坐标设备: 相对坐标设备却是以前一个坐标作为下一坐标的起始原点,利用记录后一点相对于前一点的位置增量来确定屏幕上图形位置的设备。
回显技术:图形回显技术足交互式绘图技术中的重要的一种直接辅助功能,在交互式绘图系统中,利用回显技术,用户可以重现曾经做过的操作步骤。图形回显技术可以满足于用户对曾经选择的和拾取的对象进行确认的要求。
三维定位技术:图形三维定位技术足确定空间某一直线或者点的空间位置的方法。一般有三视图定位法、三维图形数据的输入法和图片处理等方法。
三维定向技术:三维定向就是在空间中确定图形的一个方向位置。三维空间总共有六个方向自由度。如果需要确定空间物体的位置,必须知道物体所处的坐标原点、坐标系、各轴向偏转角度等数值。三维定向技术就是确定物体在三维空间中空间位置、偏转角度等问题的方法。
5.交互式图形系统有哪几种数据输入方式?每种方式的含义是什么?
答:交互式图形系统向用户提供了三种基本的输入方式:请求方式、采样方式和事件方式,除此之外,还可以三种输入方式组合使用。其中:
请求方式: 指在使用过程中,当程序工作处于输入方式时,程序向主机发出请求,以请求方式指定输入设备。只有当设备被确定时,用户才能输入数据的T作方式。
取样方式:指当一台或多台输入设备被设定了采样方式后,在其工作时,可以不需要等待程序中的输入语句。系统可以对现被设定的设备所处的状态进行采样,不断存储数据,更新当前得数据,当前数据被默认用于程序所需输入数据的工作方式。
事件方式: 指用户每次对输入设备的每次操作以及形成的数据叫做一个“事件”。往往多个事件发生后,计

算机来不及处理,于是就有必要把各个事件按照发生的顺序排成队列,把相应的数据存储在计算机内,以先进先出的原则来处理。事件方式是由输入设备来初始化数据输入、控制数据处理进程。这种处理方式叫做事件方式。
组合方式: 计算机图形输入系统往往不是单一地使用一种输入方式,各种输入方式会常常混合使用,即一个应用程序可以在几种输入控制方式下应用几种不同地输入设备来工作,这种方法就是组合方法。
6.编写一个程序以实现交互式绘图技术.
参见6.4节。

第7章 三维物体的表示
本章提要
?多边形表面
?曲线/曲面基础知识
?二次曲面
?三次样条
?Bézier曲线/曲面
?B样条曲线/曲面
?NURBS曲线/曲面
?OpenGL中的曲线/曲面
本章小结:本章首先对平面和二次曲面的有关内容进行了介绍。而对于以复杂方式自由变化的曲线曲面,即自由形曲线曲面,进行了较为详细地介绍,包括Bézier曲线曲面、B样长曲线曲面以及NURBS曲线曲面等。 最后,对应用OpenGL绘制二次曲面、Bézier曲线曲面和NURBS曲线曲面的方法进行了介绍,并给出了程序。
综合练习七及答案
1.工业产品的形状大致上可分为两类:第一类是初等解析曲面,例如:平面、圆柱面、圆锥面、球面、元环面等;第二类是自由型曲线曲面,如飞机、汽车、船舶的外形零件。
2.设有两段相邻参数曲线Ci(t)和Ci+1(t),t∈[0,I],若在连接点P处满足Ci(t)= Ci+1(t),则Ci(t)和Ci+1(t)是在P处是C0或G0连续的;若两线段在满足以上条件的基础上,还满足条件C'i(0)=αC'i+1(1),其中α>0,则称为两曲线段是G1连续的。
3.Bézier曲线的性质包括(A、B、D、E).
A.曲线的首末端点与特征多边形的首末端点重合
B.凸包性 C.局部性 D.几何不变性 E.对称性
4.B样条曲线满足的性质包括(B、C、D)。
A.曲线的首末端点与特征多边形的首末端点重合 B.凸包性 C.局部性 D.几何不变性 E.对称性
5.名词解释:
插值 逼近 拟合 样条曲线 几何不变性
插值:给定一有序的数据点Pi,i=0,1,…,n,现要求构造一条曲线顺序通过这些数据点,称为对这些数据点进行插值。所构造的曲线称为插值曲线。
逼近:当型值点较多时,构造插值函数通过所有的型值点是相当困难的。而且在某些情况下,测量所得的或设计员给出的数据点本身就比较粗糙,要求构造一条曲线严格通过一组数据点也没有什么意义。此时人们往往选择一个次数较低的函数,使其在某种意义上最为接近于给定的数据点,称之为对这些数据点的逼近。所构造的曲线称为逼近曲线。
拟合:插值和逼

近统称为拟合。
样条曲线:在计算机图形学中,样条曲线是指南多项式曲线段连接而成的曲线,在每段边界处满足特定的连续性条件。
几何不变性:曲线或曲面的表示与坐标系的选择无关,在旋转与平移变换下不变。
6.写出由五个控制点决定的Bézier曲线方程.
答:Bézier曲线的矩阵形式为:
将已知的五个控制点代人,得到四次Bézier曲线的表达
式:
7.试说明Bézier曲线、B样条曲线与NURBS曲线的主要几何特性,并比较其优劣.
答:Bézier曲线的起点与终点和特征多边形的起点与终点重合,且多边形的第一条边和最后一条边表示了曲线在起点和终点处的切矢方向。而且由于曲线的形状趋向于控制多边形的形状,所以可以通过调整顶点的位置来控制曲线的形状。但控制多边形的顶点数决定了Bézier曲线的阶次,不能作局部的修改。
B样条曲线具备了Bézier曲线的一切优点。其次数与控制点的个数无关,且具有局部性,可作局部修改。但B样条方法不能表示解析曲线与曲面。
NURBS曲线为标准的解析形状(如圆椎曲线和自由型曲线)的表示与设计提供了一个统一的数学形式。而且由操纵控制顶点及权因子为各种形状设计提供了充分的灵活性。

8.写出二次与三次均匀B样条曲线的矩阵表达式,并说明其主要几何特征,画出其图形.
答:二次均匀B样条曲线方程为:

其首末端位置满足:
Ci(0)=(Pi+Pi+1)/2
Ci(1)=(Pi+1+Pi+2)/2
首末端的切矢满足:
C’i(0)=Pi+1-Pi
C’i(1)=Pi+2- Pi+1
因此二次均匀B样条曲线段的首末点即为控制多边形各边的中点,且样条曲线在连接点处与控制多边形该边相切。
三次均匀B样条曲线可表示为:

各三次均匀B样条曲线的分段连接点及其各阶导矢与控制顶点的关系为:
Ci-1(1)= Ci(0) =(Pi+4Pi+1+ Pi+2)/6
C’i-1(1)= C’i(0)= (Pi+2- Pi)/2
因此曲线段c,可按如下几何作图求出,连接Pi与Pi+2两点,取中点m,然后从m到Pi+l连线上取2/3长度得一点,即为端点Ci(0)。曲线上Ci(0)点处的切矢为连线矢量Pi+2-Pi的一半。
图形参见7.6.2节。
9.说明Bézier曲线的德卡斯特里奥(de Costeliau)算法的主要步骤并编程上机实现.
参见7.5.4节。
10.鳊程绘制二次曲面、Bézier曲线与NURBS曲线,并上机实现.
参见7.8节。

第8章 三维图形变换
本章提要
?三维几何变换
?投影变换
?三维观察
?三维裁剪
?OpenGL中的三维图形变换
本章小结:通过三维变换,可由简单图形得到复杂图形,并用二维图形对三维物体进行表示。本章中对三维图形的变换进行了介绍,包括三维图形的几何变换,观察变换与裁剪等。三维图形变换可视为二维图

形变换的扩展,另外也包括投影变换等只有三维图形才具有的变换。最后对用0penGL实现三维物体的变换进行了介绍,并给出了实例。
综合练习八及答案
1.在透视投影中,定义投影平面后的一点为 投影中心 ,将其与三维物体上的各点的连线称为 投影线 与 投影线 的交点即称为各点的投影.
2.对于平行投影,根据投影线与投影平面间的夹角也可分为正平行投影 与 斜平等投影 两类。当投影线垂直于投影平面时,得到的投影称为 正平行投影 。
3.任何一束不平行于投影平面的平行线的透视变换将汇聚为一点,称之为 灭点 。如果对一立方体作透视变换后三个方向的棱线分别交汇于三个不同的点上,则称为 三点透视 。
4.( B )保持物体的大小比例不变,但无法给出三维物体的真实性表示.而在( C )中,离投影面近的物体较远的物体生成的图像大,生成真实感结果但不保持相关比例.
A.正平行投影 B.平行投影 C.透视投影 D.斜平行投影
5.名词解释:
投影变换 现察空间 三视图 斜平行投影
投影变换: 要将三维物体在这些二维设备上进行显示,就要把j三维坐标中的各点转化为二维平面坐标系中的点。这种把三维物体变为二维图形表示的过程称为投影变换。
观察空间: 将观察窗口沿投影的方向作平移,即可产生一个三维的观察空间。对于平行投影,观察空间的四侧面形成了与观察窗口为边界的无限长的长方体管道。而对于透视投影,观察空间是顶点位于投影中心,棱边为穿过观察窗口的边界的无限长棱锥。
三视图: 投影方向垂直于投影平面时称为正平行投影。我们通常所说的三视图即为正平行投影所得的正视图,俯视图与侧视图。
斜平行投影: 投影方向不垂直于投影面的平行投影称为斜平行投影,也称为斜轴侧投影。
6.简要说明三堆观察流程.
答:三维观察的过程可以经由以下几个步骤来完成。首先。在世界坐标系中生成图形;其次,进行从世界坐标系到观察坐标系的变换,将世界坐标系中的图形描述转换到观察坐标系中。然后进行观察空间的规范化变换,再在规范化空间内进行图形的三维裁剪。裁剪完后即可作正投影,将裁剪后的图形投影到观察平面上。最后,将观察窗口中的内容在图形输出设备上进行显示。以上的过程就称为是三维观察流程。参见8.3.5节。
7.写出绕过空间中一任意点P(x,y,z)的直线旋转α角的变换矩阵.
答:可按以下三个步骤完成:
将P点平移到坐标原点,即让直线过坐标轴原点。
绕平移后的直线旋转α角。
将P点平移回原位置。
于是,绕过P点旋转的变换矩阵为:


其中,TR为绕过原点直线旋转的变换矩阵。参见8.1.3节。
8.试写出二次变换矩阵,并比较当旋转次序变化时对结果是否有影响.
9.若已知一直线段两端点坐标为P1(-2,0,-2)和P2(2,-3,4),写出其端点的六位二进行制编码,井求出该线段与x=1平面的交点.
答:对于端点P1(-2,0,-2),x=-2<-1,-1对于端点P2(2,-3,4),x=2>l,y=-3<-1,z=4>l,则其编码为010110。其参数方程为:
x=x1+(x2-x1)t=-2+4t
y=yl+(y2-yl)t=-3t
z=z1+(z2-zl)t=-2+6t
要求与x=l的交点,代人公式得:

t位于0与l之间,因此落于窗口之内。将t代入直线的参数方程,解出交点为(1,-4/9,5/2)。
10.编写一个程序,实现对一单位立方体的平移、旋转和比例变换。
参见8.5.2节。

第9章 可见面判别算法
本章提要
?可见面判别算法基础知识
?深度缓存算法
?扫描线算法
?画家算法
?区域细分算法
本章小结: 隐藏线和面的消除是计算机图形学的一个很重要的内容。本章主要介绍了线和面的判别及其相关的处理。分别介绍了可见面判别法、深度缓存算法、扫描线算法、画家算法以及区域细分算法。各种算法各有其特点、优点以及不足。在编制程序的时候不仅要考虑到判别算法的正确性,我们还需要考虑到算法的运行效率等方面的问题。目前,有关这方面的算法还有很多,有兴趣的读者可以参阅相关的资料。
综合练习九及答案
1.在判断给定点P1是否遮挡了另外一个点P2时需要进行的两个步骤是:
(1)两个点是否在同一个投影线上,
(2)如果是,又是哪个点在另一个点的前面。
2.采用z深度缓存器法可以表示的物体的最大数目是任意一个,这是因为z深度缓冲器法一次只是处理一个物体。
3.已知点Pl(1,2,0)、P2(3,6,20)和观察点P3(2,4,6),试判断从点c(0,0,-10)观察时,哪个点遮挡了其他的点?
答:Pl在P2的前面,即P1遮挡了P2;P3不被P1或P2遮挡。分析:解答时先构造出从C点到Pl点的参数方程:
x=t; y=2t; z=-10+10t
求出参数t,然后再把P2代入求以判断P2是否在此直线上。接着再以点c为基准进行前后(即遮挡)的判断
4.消隐的意义是什么?
答:为了在计算机中得到一个确定的、立体感强的投影图,需要消除隐藏面和隐藏线,也就是在给定的投影图中,确定物体的边、面的可见性并加以消除。这个过程就需要消隐技术的处理。经过消隐后的图形,会有更强和更逼真的图形立体和空间感。
5.应该怎么样来对面或线的可见性来进行判别?
答:对隐藏线和隐藏面的可见性判别,依据不同的消隐算法而有不同。其共同的地方就是采用一定的

数学模型的描述,确定线或面在物体空间中的位置的前后问题,也即深度判断。下面是进行隐藏线算法的描述。
Hidden-line-eliminate()
{
程序初始化; /*输入物体的定义和视点参数*/
生成相应的变换矩阵CHANGE;
for(i=l; i<=NPOINT; i++) /*NPOINT为顶点的个数*/
{
对顶点i做投影变换产生具有深度值的屏幕坐标}
for(j=l; j<=NFACE; j++) /*NFACE为物体上面的个数*/
{
if(面j是潜在的可见面)
{
计算平面方程A、B、C、D四个系数系数;
计算包围盒角点坐标和最大的深度值;
记录上匾的计算结果标志指针;
for(面j的各条边)
{
if(判断组成面i的边是否处于线段表中)
{
如果不是,则把该边送进线段表中;
}
}
}
}
/*以上所进行的操作计算产生了一个潜在可见面表(个数为NFACE_I)和一个不重复的潜在的可见线段表(个数为NLINE)*/
for(p=1; p<=NLINE; p++)
{ /*对潜在可见线段p的处理*/
for(n=1;n<=NFACE_1;n++)
{/*计算线段p被面n隐藏的部分*/
if(线段p被面可能存在隐藏关系)
{ /*即不能用包围盒检验和深度检验排除*/
计算线段投影与面的各边投影的交点;
/*假设上述交点把线段分为M段*/
for (m=1;m<=M;m++)
{
if(第m段被隐藏)
标志该段的隐藏性为真;
else
标志该段的隐藏性为假;
}
}
}
对线段p的各隐藏线段进行求并运算;
if(存在可见线段)
{对该线段进行输出;}
}
}/*结束程序,返回*/
6.什么是深度缓存算法?试着编写深度缓存算法核心程序的描述.
答:所谓深度缓存算法,就是对于显示屏幕上的每一个像素点(x,y),测试一系列平面记录下位于此像素投射线上的最靠近观察点的平面的深度以及用以显示此对象的亮度值。假设有N个多边形,屏幕上像素点个数为mxn,则算法的核心程序处理步骤是:
Z-DEPTH()
{/*ZB为深度缓存数组,FB为显示器的帧缓存},初始化ZB和FB(其中使得: ZB(i,j)=机器最大值,FB(i,j)=屏幕背景色);
for(i=l; i<=n;-++) /*第i条扫描线*/
{
for(j=l;j<=m;j++) /*第i条扫描线上第j个像素点*/
{
for(k=l;k<=number;k++) /*number为多边形个数*/
{
z(i,j)=机器最大值;
对点(i,j)是否处于多边形k在xoy平面(即屏幕)上的
投影多边形内进行判断(如果是,则标志为flag=l;
否则标志为flag=0);
if(flag=1)
{
计算多边形k在该点(iJ)处的深度值z(U);
}
if(z(i,j){ZB(i,j)=Z(i,j);
FB(i,j)=多边形k的颜色;
}
}
}
}
}/

*结束程序,退出*/

7.什么是画家算法?它需要考虑哪几方面的情况?为什么只能处理相互不相交的面?
答:画家算法也称列表优先算法,是根据物体的远近程度的不同来完成隐面消除的。它预先在物体空间中计算物体上各面的可见性的优先级,然后再在图像空间中产生消隐图。该算法类似于油画家作面的过程,先面远处的景物,再画中间的景物,最后画近处的景物。所以,我们称此算法为画家算法。
画家算法需要考虑:两个面相交或是三个甚至更多个面相互重叠的情形。
画家算法由于先画远处的景物,再画中间的景物,最后 画近处的景物,对相互相交的面而言,就会造成任何排序的 方法都不能得到正确的序列的错误了。
8.区域分割算法的基本概念是什么?
答:首先,如果多边形的投影覆盖了显示屏幕的 给定区域,那么从给定区域内可以看见那个多边形。第二, 对于覆盖了给定屏幕区域的所有多边形,在区域内可见的某 个多边形一定是最前面的一个多边形。第三,如果不能判断给定区域内的哪个多边形可见(是否在其他多边形前面),则分割该区域为更小的子区域,直到可以判断多边形可见性为止(或分割到一个像素为止)。
9.假设两个多边形有公共边.在谊公共边上做深度计算时,自然会得出相同的结果.在使用z缓冲器算法或扫描算法处理时,若在谈边所经过的各个像素随意取一个多边形作为可见面,会产生什么样的问题?如何解决这个问题?
答:判断多边形是否相互重叠的方法是:用一个多边形的每条边与另一个多边形的每条边比较,判断是否相交。
按照画家算法的测试的,可顺序执行各个测试的操作。 如两个多边形如N和M,判断N是否遮挡了M,所有的测试都是真的,那么认为多边形N没有遮挡M,故先画N;如果所有的测试都为假,则通过交换N和M,重新执行所有的测试,如果其中有一个测试为真,则N没有遮挡M,先画N;如果又是所有的测试都为假,则以包含多边形M的平面为分割面,必须将多边形M进行分割。具体的介绍请参照课本。


第10章 真实感图形的生成与处理
本章提要
?简单光照模型
?明暗处理方法
?透明的处理
?阴影产生技术
?整体光照模型与光线跟踪
?纹理处理
?颜色
?OpenGL中的真实感图形的生成
本章小结
光学物理是真实感图形的重要的理论基础,因为真实感图形是通过景物表面的颜色和明暗色调来表现景物的几何形状、空间位置以及表面材料的。本章介绍了在图像真实感处理过程中,考虑景物的明暗、透明、阴影、纹理、颜色等各个方面,并采用不同的光照模型及相应的处理方法。最后对应

用0penGL生成光照条件下的真实感图形进行了介绍,并给出了实例。
综合练习九及答案
1.表面明暗处理的三个部分分别是:局部贡献、反射光贡献、透射光贡献.
2.光线与向量的区别是,对向量而言,它是用方向和大小来进行定义的;对光线而言,它是由方向和起始点确定的.
3.在表面明暗处理中,(A)是用于处理局部贡献的.
A.阴影光线 B.镜面反射光线 C.镜面透射光线
4.二维空间中的直线可以表示为代数方程y=mx+b或参数方程L(t)=s+dt,其中-∞A.y=-x+2 B.y=x+2 C.y=x-2
5.物体表面的颜色由什么因素决定,如果是在简单光照模型中,对不透明的物体而言,其表面颜色由什么决定?
答:物体表面的颜色一般决定于物体表面向视线方向辐射的光能中各波长的分布,也即决定于所选择吸收那部分光的波长。
在简单光照模型中,如果物体是不透明的,则物体表面的颜色取决于其反射光。
6.单光照模型中,有哪几种类型的光?各自的特点是什么?
答:在简单光照模型中,一般可分成环境反射光、漫反射光和镜面反射光等。
环境反射光:环境光是周围的景物散发出来的通过物体表面而反射出来的光,没有直接的光源和固定的光线方向,弥漫于整个空间。这种光线在空间中是均匀的,被照射的物体的各个方向都有相同的明暗度。
漫反射光:光源来自一个方向,反射光均匀地射向各个方向。
镜面反射光:产生所谓的“高光”效应。镜面反射遵守反射定律,其是位于表面的法矢的两侧的,与反射角有关。
7.假设点P在扫描线Y1上而且亮度值为E1,点P2在扫描线Y2上而且亮度值为E2。给出Y方向上的递推公式,该公式可以用线性插值计算P1和P2之间所有扫描线的亮度值E’。
答:设Pl点为开始点,则从一条扫描线到下一条扫描线的亮度变化值为:
△E=(E2-E1)/(Y2-Y1)
所以:E'1=E1而且E'i=E'i-1+△E,其中:i=2,3,4,...,
(y2-y1)。
8.设n=i+j+2k为通过点P0=(1,l,0)的平面的法线向量.试判断s=-2i+j+2k,d=i-k的光线是否与平面相交?
答:如果光线与任意平面相交,由于:
n?d=lxl+lx0+2x(-1)=-1<0;
所以:光线与平面相交。引入:
p=(x0-xs)i+(y0-ys)j+(z0-zs)k
=[l-(-2)]i+(1-1)j+(0-2)k
=3i-2k;
t=(n?p)/(n?p)=[l×3+l×0+2×(-2)]/(-1)=1
计算:
所以交点是(xs+xd,ys+yd,zs+zd)=(-1,1,1)。
9.恒定光强的明暗处理、Gouraud明暗处理方法、Phong明暗处理方法各有什么特点?
答:恒定光强的明暗处理:这种方法主要适用于平面体的真实感图形的处理。它只是采用一种颜色来对多边形进行绘制,在多边形上任意取一点,

利用简单光照模型计算出该点的颜色作为多边形的颜色。
10.简要说明RGB、CMY和HSV三种颜色模型的特点。
答:红、绿、蓝(RGB)颜色模型通常用于彩色阴极射线管和彩色光栅图形显示器。它采用直角坐标系,红、绿、蓝原色是加色系统,即各种原色的强度加在一起生成另一种颜色。因对,对于一种颜色C,在RGB颜色系统下表示为:
C=rR+gG+bB
以红、绿、蓝的补色青、品红、黄为原色构成的CMY颜色系统,常用于从白光中减去某种颜色,故称为减色原色系统。我们可以使用一个矩阵来表示RGB与CMY颜色模型之间的转换关系,即:
HSV颜色模型可以用六棱锥表示,为这种模型中提供给用户的三种颜色参数是色彩(Hue)、色饱和度(Saturation)和明暗值(Value),即称HSV模型。用户通过选择一种彩色并将一定量的白色和黑色加到该颜色以获得不同的明暗、浓淡和色调。
11.光线跟踪算法有什么特点?写出该算法的程序处理框图并缟程上机实现.
答:光线跟踪算法的主要特点是利用光线的可逆性,不是从光源出发,而是从视点出发,沿着视线进行追踪的,模拟光的传播路径来确定反射、折射和阴影。其屏幕上对应点的总光强度由三部分光强所组成:
(1)光源直接照射及环境光所产生的局部光强。
(2)反射光2来的光强对点B的作用。
(3)透射光3来的光强对点B的作用。
基本光线跟踪算法的核心程序描述如下:
RAYTRACE(ray, depth, color)
{
求光线ray与物体的最近的交点;
if(没有交点) color=背景色;
else
{
color=-局部光颜色; /*用Phong公式计算*/
if(depth>1)
{
求反射光线reflectedray;
RAYTRACE (reflectedray, depth-1, ref_color);
求透射光线transmittedray;
RAYTRACE (txansmittedray, depth-1, trans_color);
color=color+kr*ref_color+kt*trans_color;
}
}
}
12.编写一个程序生成光照条件下的真实感图形,并上机实现.
参见10.9节。

(完)



相关主题
文本预览
相关文档 最新文档