计算机图形学复习题及其解答Word下载.docx
- 文档编号:16547310
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:30
- 大小:230.15KB
计算机图形学复习题及其解答Word下载.docx
《计算机图形学复习题及其解答Word下载.docx》由会员分享,可在线阅读,更多相关《计算机图形学复习题及其解答Word下载.docx(30页珍藏版)》请在冰豆网上搜索。
图形的输出设备主要有显示器、打印机和绘图仪两种。
9.图形显示设备的相关术语:
像素、分辩率、点距等等。
电子枪发射电子束,经过聚焦在偏转系统控制下电子束轰击荧光屏,在荧光屏上产生足够小的光点,光点称为像素(pixel)。
阴极射线管在水平和垂直方向单位长度上能识别的最大光点数称为分辨率。
点距一般是指显示屏相邻两个像素点之间的距离。
10.CRT显示设备的主要组成部件及其工作原理。
CRT显示设备主要由电子枪、聚焦系统、加速电极、偏转系统和荧光屏五部分组成。
其工作原理是:
高速的电子束由电子枪发出,经过聚焦系统、加速系统和磁偏转系统就会到达荧光屏的特定位置。
由于荧光物质在高速电子的轰击下会发生电子跃迁,即电子吸收到能量从低能态变为高能态。
由于高能态很不稳定,在很短的时间内荧光物质的电子会从高能态重新回到低能态,这时将发出荧光,屏幕上的那一点就会亮了。
11.CRT产生彩色的基本途径。
CRT产生的色彩是发出不同颜色的荧光物质进行组合而得到的,每个像素由三个荧光点组成,这三个荧光点分别为发红、绿和蓝色光的三种荧光物质,有三支电子枪分别与这三个荧光点相对应。
因为荧光点非常小而且充分靠近,所以我们看到的是具有它们混合颜色的一个光点。
通过调节电子枪发出的电子束中所含电子的多少,可以控制击中的相应荧光点的亮度,因此以不同的强度击中荧光点,就能够在像素点上生成极其丰富的颜色。
12.显示缓冲显示器和分辨率的关系及其大小的计算。
显示器缓存=分辨率×
颜色比特数
13.CRT真彩色和伪彩色的颜色大小及其应用环境。
真彩色是16兆种颜色,伪彩色有256色。
真彩是指windows正常显示,伪彩一般在安全模式
14.LCD显示器的工作原理。
LCD显示器的工作原理是利用液晶的物理特性,通电时导通,晶体在电场作用下,排列变得有秩序,通过它的光的折射角度会发生变化,使光线容易通过;
不通电时,晶体排列变得混乱,光被遮挡,不能通过。
15.图形标准实现了哪些可移植性?
提供了哪些接口?
图形标准的制定是为了在不同的计算机系统和外设之间进行图形应用软件的移植。
这种移植性包括应用程序在不同系统之间的可移植性、应用程序与图形设备的无关性、图形数据的可移植性和程序员层次的可移植性。
为了实现这些可移植性,有三个接口必须实现统一标准:
应用接口
虚拟图形设备接口
数据接口。
16.Windows程序的执行模式及流程,为了实现图形的输入和输出Windows采用什么技术?
在Windows应用程序中,有一个WinMain函数,它是Windows应用程序执行的开始点。
WinMain函数在完成初始化后创建该应用程序的一个窗口,这个窗口被称为“主窗口”。
主窗口创建了窗口函数WndProc,用来接收和处理消息。
用户的所有操作均以消息的形式进入消息队列,应用程序从消息队列中检测和选取消息,并分别处理。
Windows应用程序使用图形设备接口进行图形编程,Windows自动将设备上下文映射到具体的物理设备上实现图形输出。
图形的输入和输出Windows采用GDI技术。
17.五种开发技术的比较
技术
实现层次
语言及其难易程度
扩展性
应用领域
OpenGL
底层(显卡)
C/C++(难)
厂商全面支持(好)
三维设计软件
ACIS
底层(操作系统)
C++(难)
Windows平台(较好)
三维造型和显示
DirectX
Windows平台(差)
三维游戏
Java3D
中间层(JVM)
Java(较易)
JavaSE标准扩展(好)
网上三维显示实现
VRML
高层(网页)
标记语言(容易)
安装插件支持(一般)
网上虚拟实现
18.OpenGL是什么样的图形标准。
OpenGL的主要功能。
OpenGL(OpenGraphicsLibrary,即开放性图形库)是以SGI的GL三维图形库为基础制定的一个开放式三维图形标准。
OpenGL的主要功能:
绘制模型、各种变换、着色模式、光照处理、纹理映射、位图和图像、制作动画、选择和反馈。
此外,OpenGL还提供了反走样技术,能够实现深度暗示(DepthCue)、运动模糊(MotionBlur)、雾化(Fog)等特殊效果。
19.OpenGL的工作流程和原理。
用C++实现OpenGL编程main函数的主要的语句(GLUT库函数及其调用次序).
OpenGL指令从左侧进入OpenGL,有两类数据,分别是由顶点描述的几何模型和由像素描述的位图、影像等模型,其中后者经过像素操作后直接进入光栅化。
评价器(Evaluator)用于处理输入的模型数据,为下一步光栅化做好准备。
显示列表(DisplayList)用于存储一部分指令,留待合适时间以便于快速处理。
光栅化将图元转化成二维操作,并计算结果图像中每个点的颜色和深度等信息,产生一系列图像的帧缓存描述值,其生成结果称为基片(Fragment)。
基片操作主要的有帧缓存的更新、测试、融合和屏蔽操作,以及基片之间的逻辑操作和抖动(Dithering)。
程序:
#include<
glut.h>
voidinit(void)
{
glClearColor(1.0,1.0,1.0,0.0);
//设置图形显示窗口为白色
glMatrixMode(GL_PROJECTION);
//设置投影参数
gluOrtho2D(0.0,200.0,0.0,150.0);
//设置投影面的大小
}
voidlineSegment(void)
glClear(GL_COLOR_BUFFER_BIT);
//刷新显示窗口缓存
glColor3f(1.0,0.0,0.0);
//设置划线的颜色
glBegin(GL_LINES);
//指定线的参数
glVertex2i(180,15);
glVertex2i(10,145);
glEnd();
glFlush();
//强制机器尽快执行OpenGL函数
intmain(intargc,char**argv)
glutInit(&
argc,argv);
//初始化GLUT
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
//设置显示模式
glutInitWindowPosition(50,100);
//设置显示窗口的大小和位置
glutInitWindowSize(400,300);
glutCreateWindow(“AnExampleOpenGLProgram”);
//创建显示窗口
init();
//执行初始化过程
glutDisplayFunc(lineSegment);
//发送OpenGL图形到显示窗口
glutMainLoop();
//显示并等待
return0;
20.正确使用OpenGL有关缓存的预定义常量以及相关的语句
1、颜色缓存函数:
(1)清除颜色缓存glClear(GL_COLOR_BUFFER_BIT)
(2)设置清除颜色glClearColor(red,green,blue,alpha)
(3)屏蔽颜色缓存glColorMask()
(4)选择颜色缓存glDrawBuffer()
(5)交换颜色缓存swapBuffer()
2、深度缓存:
(1)清除深度缓存glClear(GL_DEPTH_BUFFER_BIT)
(2)设置清除值glClearDepth(1.0)
(3)屏蔽深度缓存glDepthMask(GL_TRUE)
(4)启动和关闭深度测试glEnable(GL_DEPTH_TEST)
(5)确定测试条件glDepthFunc()
(6)确定深度范围glDepthRange(GlclampdzNear,GlclampdzFar)
3、模板缓存
4、累积缓存
21.常用的直线扫描转换算法有哪些?
数值微分法(DDA)、中点画线法和Bresenham算法。
22.DDA、中点画线和Bresenham算法的基本原理(就是指最后增量公式的推导过程)、算法OpenGL编程实现、手工计算给定端点直线的扫描像素点。
DDA算法基本原理是用数值方法解微分方程,通过同时对x和y各增加一个小增量,计算下一步的x、y值。
Bresenham算法的基本原理是借助于一个误差量(直线与当前实际绘制像素点的距离),来确定下一个像素点的位置。
算法的巧妙之处在于采用增量计算,使得对于每一列,只要检查误差量的符号,就可以确定该下一列的像素位置。
23.中点画圆算法OpenGL编程实现(八分之一圆、完整圆)。
八分之一圆程序:
MidPointCircle(intr,intcolor)
{
intx,y;
inte;
x=0;
y=r;
e=1-r;
circlepoints(x,y,color);
//做对称处理
while(x<
=y)
{
if(e<
0)
e+=2*x+3;
else
e+=2*(x-y)+5;
y--;
}
x++;
//做对称处理
24.图形的边界处理原则。
多边形两种表示方法及其特点。
原则:
左闭右开,上闭下开。
两种重要的表示方法:
顶点表示和点阵表示。
所谓顶点表示,即是用多边形的顶点序列来表示多边形。
这种表示直观、几何意义强、占内存少,易于进行几何变换,但由于它没有明确指出哪些像素在多边形内,故不能直接用于区域填充。
所谓点阵表示,则是用位于多边形内的像素集合来刻画多边形。
这种表示丢失了许多几何信息,但便于进行填充。
25.扫描线多边形区域填充算法的原则。
待填充区域按Y方向(X方向亦可)扫描线顺序扫描生成。
26.有序边表扫描线算法实现步骤。
边界标记算法的基本思想和伪代码描述。
有序边表扫描线算法实现步骤
(1)求交:
计算扫描线与多边形各边的交点;
(2)排序:
把所有交点按x值递增顺序排序;
(3)配对:
第一个与第二个,第三个与第四个等等;
每对交点代表扫描线与多边形的一个相交区间;
(4)填色:
把相交区间内的像素置成多边形颜色,把相交区间外的像素置成背景色。
边界标记算法的基本思想:
帧缓冲器中对多边形的每条边进行直线扫描转换,亦即对多边形边界所经过的象素打上标志。
然后再采用和扫描线算法类似的方法将位于多边形内的各个区段着上所需颜色。
使用一个布尔量inside来指示当前点是否在多边形内的状态。
伪代码:
voidedgemark_fill(polydef,color)
多边形定义polydef;
intcolor;
{对多边形polydef每条边进行直线扫描转换;
inside=FALSE;
for(每条与多边形polydef相交的扫描线y)
for(扫描线上每个象素x)
{if(象素x被打上边标志)
inside=!
(inside);
if(inside!
=FALSE)
drawpixel(x,y,color);
elsedrawpixel(x,y,background);
27.四种子和八种子填充算法以及边界填充算法的程序实现。
内点表示的四种子填充算法程序:
voidFloodFill4(intx,inty,intoldcolor,intnewcolor)
if(GetPixel(x,y)==oldcolor)
{
SetPixel(x,y,newcolor);
FloodFill4(x,y+1,oldcolor,newcolor);
FloodFill4(x,y-1,oldcolor,newcolor);
FloodFill4(x-1,y,oldcolor,newcolor);
FloodFill4(x+1,y,oldcolor,newcolor);
边界表示的四种子填充算法程序:
voidBoundaryFill4(intx,inty,intboundarycolor,intnewcolor)
if(color!
=newcolor&
&
color!
=boundarycolor)
SetPixel(x,y,newcolor);
BoundaryFill4(x,y+1,boundarycolor,newcolor);
BoundaryFill4(x,y-1,boundarycolor,newcolor);
BoundaryFill4(x-1,y,boundarycolor,newcolor);
BoundaryFill4(x+1,y,boundarycolor,newcolor);
28.VC++框架的绘图的函数:
OnDraw的使用。
例:
画出一个半径为5像素的圆并以黑色填充之,得到一个比较大的点:
voidCDrowDotView:
:
OnDraw(CDC*pDC)
pDC->
SelectStockObject(BLACK_BRUSH);
//画出的点为黑色
Ellipse(CRect(5,10,10,15));
//画一个小圆
画一条从(5,5)到(50,50)的直线,则程序代码如下:
voidCDrawLineView:
OnDraw(CDC*pDC)
MoveTo(5,5);
LineTo(50,50);
29.掌握OpenGL画点和画直线的代码。
画点:
glBegin(GL_POINTS);
glVertex2f(0.0,0.0);
glVertex2f(0.0,3.0);
glVertex2f(3.0,3.0);
glVertex2f(4.0,1.5);
glVertex2f(3.0,0.0);
画直线:
glBegin(GL_LINES);
glVertex2f(0.5f,0.5f);
glVertex2f(-0.5f,0.0f);
glVertex2f(-0.5f,0.5f);
glVertex2f(0.0f,-0.5f);
glEnd();
30.图形变换的分类(三类)。
齐次坐标及其优点。
几何变换、坐标变换、显示变换
所谓齐次坐标表示就是用n+1维向量表示n维向量。
优点:
一方面可以表示无穷远点;
另一方面容易用矩阵与矢量乘的方法表示点的平移操作,以便简化计算过程。
31.
二维图形的齐次坐标矩阵变换矩阵各分量的含义。
答:
[a1,a1,……c3]可以旋转,错切;
[d1,d2,d3]可以平移变换;
[p,q,r]可以透视变换;
S可以比例变换;
32.掌握二维图形的平移、对称、旋转、缩放变换的矩阵形式。
二维图形各种基本变换的变换矩阵及图示如表4-1所示。
表4-1
变换类型
变换矩阵
矩阵元素的说明
变换图示
平移变换
m,n分别是在X轴,Y轴上的平移量
比例变换
分别是X,Y向的比例系数
对称变化
以X轴对称
以Y轴对称
以坐标原点对称
以45º
直线对称
以-45º
旋转变换
是旋转角,逆时针旋转取正值,反之取负值
33.三维图形的显示流程,窗口区和视图区的坐标变换。
对窗口剪裁
窗口到视区变换
显示
几何变换
投影变换
变换过程:
(1)将窗口左下角点(WXL,WYB)平移到窗口所在坐标系的原点;
(2)进行缩放变换,使窗口的大小与视区相等;
(3)将窗口内的点映射到视区中,再进行反平移,将视区的左下角移回到原来的位置。
34.平面几何的投影分类标准及分类。
分类标准即投影方式。
可分为平行投影和透视投影。
35.什么是裁剪?
常用的直线裁剪和多边形裁剪算法有哪些?
区域编码及其应用
确定图形中哪些部分落在显示区之内,哪些落在显示区之外,以便只显示落在显示区内的那部分图形。
这个选择过程称为裁剪。
常用的直线裁剪算法有:
Cohen_Sutherland算法和Liang_Barsky算法。
多边形裁剪算法有:
Sutherland_Hodgman算法和Weiler_Atherton算法。
区域编码:
1001
1000
1010
0001
0000
0010
0101
0100
0110
36.正确使用OpenGL有关几何变换、投影变换以及视图变换的预定义常量、函数及其参数。
几何变换:
1)平移平移变换函数:
voidglTranslate{fd}(TYPEx,TYPEy,TYPEz)
三个函数参数就是目标分别沿三个轴向平移的偏移量。
2)旋转旋转变换函数:
voidglRotate{fd}(TYPEangle,TYPEx,TYPEy,TYPEz)
函数中第一个参数是表示目标沿从点(x,y,z)到原点的方向逆时针旋转的角度,后三个参数是旋转的方向点坐标。
3)缩放和反射变换函数如下:
voidglScale{fd}(TYPEx,TYPEy,TYPEz)
三个函数参数值就是目标分别沿三个轴向缩放的比例因子。
投影变换:
1)正射投影(OrthographicProjection)2)透视投影ivoidglFrustum(GLdoubleleft,GLdoubleRight,GLdoublebottom,GLdoubletop,
GLdoublenear,GLdoublefar);
iivoidgluPerspective(GLdoublefovy,GLdoubleaspect,GLdoublezNear,GLdoublezFar);
视图变换:
glViewport(GLintx,GLinty,GLsizeiwidth,GLsizeiheight);
37.Windows交互图形设计基本方法。
橡皮筋技术。
图元的选择两种类型。
基本方法:
(1)交互式绘图
(2)坐标输入技术(3)橡皮筋技术
橡皮筋技术可用于交互式绘图以表现用户操作的过程细节。
实现橡皮筋技术主要有两种方法:
基于异或操作的橡皮筋技
术;
基于缓冲区的橡皮筋技术;
图元的选择两种类型:
静态选择和动态选择。
38.生成真实感图形的步骤。
构造各个物体的数学描述;
将各个物体安放在给定参考坐标系的三维空间中适当位置处,由此构成场景,并且选择所期望的观察场景的视点、视方向、视域;
给出各个物体的颜色信息;
将各个物体的数学描述和他们相关的颜色信息转化为屏幕上的像素信息。
39.什么是消隐?
消隐的分类。
为什么要消除隐藏线?
通过判别当前观察方向的可见线和可见面,然后只显示可见线与可见面可以消除图形的二义性简称消隐。
分类:
消除隐藏线和消除隐藏面。
隐藏线的产生是因为在给定的观察方向下,某些棱(或棱的一部分)被表面多边形的遮挡成为不可见,因此要消除隐藏线
40.面消隐算法的分类(代表性算法)及每一类消隐算法的伪代码和时间复杂度计算。
物空间算法:
for(场景中的每一个物体)
将其与场景中的其它物体比较,确定其表面的可见部分;
显示该物体表面的可见部分;
像空间算法
for(窗口内的每一个像素)
确定与此像素对应的距离视点最近的物体,
以该物体表面该处的颜色来显示像素;
}
41.提高消隐算法的方法有哪些?
提高消隐算法的方法有:
利用连贯性、包围盒技术、背面剔除、区域分割技术、
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 图形学 复习题 及其 解答