《计算机图形学》答案.docx
- 文档编号:8168452
- 上传时间:2023-01-29
- 格式:DOCX
- 页数:24
- 大小:55.35KB
《计算机图形学》答案.docx
《《计算机图形学》答案.docx》由会员分享,可在线阅读,更多相关《《计算机图形学》答案.docx(24页珍藏版)》请在冰豆网上搜索。
《计算机图形学》答案
第一章:
P56
1、列出在你过去学习工作中用过与计算机图形学有关的程序
c语言:
#include
main()
{
intgraphdriver=VGA,graphmode=VGAHI;
initgraph(&graphdriver,&graphmode,””);
setbkcolor(BLUE);
setcolor(WHITE);
setfillstyle(1,LIGHTRED);
bar3d(100,200,400,350,100,1);
floodfill(450,300,WHITE);
floodfill(250,450,WHITE);
setcolor(LIGHTGREEN);
rectangle(450,400,500,450);
floodfill(470,420,LIGHTGREEN);
getch();
closegraph();
}
JAVA语言:
例1、画点
Importjava.io.*;
Classpoint
{
intax;
intay;
intbx;
intby;
publicpoint(intax,intay,intbx,intby)
{
floatk;//计算斜率
floatb;
k=(by-ay)/(bx-ax);
b=ay-ax*k;
system.out.println(“直线的方程为:
y=”+k+”x”+”+”+b);
}
例2、画矩形
classDrawPanelextendsJpanel
{
publicvoidpaint(Graphicsg)
{
super.paint(g);
Graphics2Dg2=(Graphics2D);
Doubleleftx=200;
Doubletopy=200;
Doublewidth=300;
Doubleheight=250;
Rectangle2Drect=newRectangle2D.double(leftx,topy,width,height);
G2.draw(rect);
}
}
2、试比较个人计算机与工作站的图形功能
个人计算机仅限于符合二维,又是单任务操作方式
工作站可处理二、三维,多任务操作方式
区别
个人计算机
工作站
显示分别率
640X480
1024X900以上
具有8个以上位面
显示器尺寸
12~14英寸
16、19、27英寸
图形处理能力
符号或二维
具有反走样、线和面消隐、光照模型等处理硬件;同时还具有丰富的图形生成和处理软件
主要处理二维或三维图形、图象
计算机性能
主要取决于微处理器的性能
具有更强的处理功能,在操作系统、页面虚拟存储器和主要用途都有所不同
操作方式
单任务
多任务、多进程
●个人计算机的主要功能是字符处理,而工作站不仅有字符处理功能,还有较强的图形处理功能
●个人计算机的显示分辨率较小,一般在640X480的图形处理符号或二维图形;而工作站为了满足强大的图形处理,显示分辨率为一般为1024x1024的二维或三维图形
●个人计算机的显示器相对工作站较小
●个人计算机的图形系统是由个人计算机加上图形输入输出设备和有关的图形支撑软件集成起来的系统,其性能取决于个人计算机所采用的微处理器芯片,个人计算机的图形功能由于受到软件和硬件的限制,只适合处理比较简单的事情;个人计算机的显示分辨率一般在640X480的图形处理符号或二维图形
●而工作站在处理器、总线设计、存储器、操作系统等多个方面都有比个人计算机优越的地方,它配有专业的图形输入输出设备,并配有图形处理器以处理大量的复杂的图形运算;它可以处理多任务进程、处理显示分辨率为1024x1024的二维或三维图形、具有高速的科学计算能力、丰富的图形处理、灵活的窗口及网络管理功能的交互式计算机系统,它的图形功能比个人计算机图形系统强德多,但在造价上远高于个人计算机。
3、具有相同分辨率的彩色光栅显示器与黑白光栅在结构上有何区别?
彩色:
对于红、绿、蓝的三个原色有三个位面的帧缓存和三个电子枪,每个位面的帧缓冲对应一个电子枪即对应一种颜色;对每个颜色的电子枪可以通过增加帧缓存位面来提高颜色种类和灰度级,通过三种原色的组合可以产生不同种类的颜色。
彩色光栅显示器主要是有红、绿、蓝的三个原色所组成,每种原色电子枪有8个位面的帧缓存和8位的数模转换器,每种原色有256种亮度,三种原色组合可为16771216种颜色,也可以通过颜色查找表查找,故帧缓存位数至少24位。
黑白:
黑白光栅显示器的帧缓存是一块连续的计算机存储器,每个像素需1位存储器,每个存储器只有0或1两个状态。
因此一个位面的帧缓存只能产生黑白图形。
可以增加象素点的位面数,通过多个位面显示出多种灰度级。
7、在光栅显示器上显示斜线的45º角时常会发生锯齿状,请考虑减少锯齿状效果的各种方法并说明采用这些方法的代价。
在光栅图形显示器上显示斜线时常会发生锯齿,这是由于直线或多边形边界在光栅图形显示器的对应图形都是由一系列相同亮度的离散象素构成的。
这种用离散量表示连续亮引起的失真称为走样,而用于减少或消除这种效果的技术,称为反走样。
一般而言,减少锯齿有三种方法,下面以直线扫描转换为例,分别介绍三种方法:
(1)提高分辨率
假设把显示器的分辨率提高一倍,虽然直线经过2倍的象素,锯齿也会增加一倍。
但由于每个锯齿在X方向和Y方向都只有低分辨率的一半,所以效果看起来会好一些,这种改进方法是以4倍的存储器代价和4倍的扫描转换时间获得的。
因此增加分辨率是不经济的方法,它只能减轻,不能消除锯齿。
(2)简单的区域取样
在直线扫描算法假定象素是数学上的一个点,象素的颜色是由对应于象素中心的图形中一点的颜色决定的。
但是,实际上象素不是一个点,而是一个有限区域。
屏幕上所画的直线段不是数学意义上的无宽度的理想线段,而是一个宽度至少为一个象素单位的线条。
因此,把屏幕上的直线看成是长方条形更为合理。
在绘制直线条时,所有与该长方条相交的象素都采用适当的宽度给予显示。
这要求显示器各象素可以用多灰度显示。
例,设象素中心是在网格点上的不相交的正方形,象素的灰度与它落在直线条内的面积成正比。
在多灰度黑白显示器上,若一个象素整个落在线条上,则将它置成前景色。
若一个象素与线条部分相交,根据相交部分的大小来选择不同的灰度,相交部分大的象素前景色成分更多一些,相交部分小的象素前景色成分更少一些。
这种方法将产生模糊的边界,以此来减轻锯齿效应。
在实际应用中,常采用盒式滤波器
(3)加权区域取样
加权区域取样方法采用更为优化的圆锥形滤波器。
圆锥的底圆中心在当前象素中心,底圆半径为一个单位,锥高为1。
当直线条经过该象素时,该象素的灰度值是在二者相交区域上对滤波器进行积分的积分值。
用这种圆锥形滤波器有如下特点:
一是接近理想直线的象素将被分配更多的灰度值。
二是相邻两个象素的滤波器相交,所以直线条经过该相交区域时,将对这两个象素分配给适当的灰度值,这有利于缩小直线条上相邻象素的灰度差。
第二章:
P128
1、为什么要制定和采用计算机图形标准?
已经ISO批准的计算机图形标准软件有哪些?
为了提高计算机图形软件、计算机图形的应用软件以及相关软件的编程人员在不同的计算机和图形设备之间的可移植性。
已获ISO批准的计算机图形标准软件有:
●计算机图形核心系统(GKS)及其语言联编
●程序员层次交互式图形系统(PHIGS)及其语言联编
●三维图形核心系统(GKS-3D)及其语言联编
●计算机图形元文件(CGM)
●计算机图形接口(CGI)
●基本图形转换规范(IGES)
●产品数据转换规范(STEP)等
2、CGI标准的主要功能是什么?
试用CGI中的图形输出功能绘制一副机械零件图。
CGI的目的是提供控制图形硬件的一种与设备无关的方法,它可以看成是图形设备驱动程序的一种标准。
CGI在用户程序和虚拟设备之间,以一种独立于设备的方式提供图形信息的描述和通信,使有经验的用户最大限度地、灵活地直接控制图形设备。
它所提供的功能集包括:
●控制功能集
●独立于设备的图形对象输出功能集
●图段功能集
●输入和应答功能集
●产生修改、检索和显示以像素数据形式存储的光栅功能集
3、CGM对文件管理的存储结构是采用何种形式?
你认为应用这种结构有什么优缺点?
采用生成多个与设备无关的图形定义,提供随机存取、传送、简洁定义图象的图形生成元文件的存储结构,它不是应用程序员的标准,而是为系统和系统开发而设计的,与CGI配套供用户使用。
优点是:
它具有通用性,即CGM应能广泛适应各种设备、应用系统。
例如同一个文件即可在低分辩率的单色图形终端上输出,也可在高分辨率的多笔绘图仪上输出,或在高性能的光栅图形显示器上输出。
这种结构的缺点是:
它只是一个静态的图形生成元文件,即它不能产生和定义图形的动态效果,例如不能实现动态的几何变换。
4、GKS、PHIGS、GI在应用程序中起的作用?
试比较它们在输入输出功能上的相同和不同之处?
GKS在应用程序和图形输入输出设备之间提供了功能接口,包括:
控制功能、输出功能、输出属性、变换功能、图段功能、输入功能、询问功能、实用程序、元文件处理和出错处理。
PHIGS向应用程序提供控制图形设备的图形系统接口,能够在系统中高效率地描述应用模型,迅速地修改图形模型的数据;并能够绘制显示修改后的图形模型。
GL是工作站或UNIX上广泛应用的一个工业标准图形程序库,和PHIGS同样是提供用户与程序图形系统接口。
包括基本图素、坐标变换、设置属性和显示方式、输入/输出处理、真实图形显示。
相同点:
三个都是提供用户与输入输出设备之间的图形系统接口的标准图形程序库。
不同点:
不同的数据结构
可修改性
属性的存储
输出流水线等
具体而言:
●GKS有6种输入功能和6种输出图素,在输入功能上可对各种设备初始化,设定设备工作方式、确定请求采样和事件输入;在输出功能上,可确定输出图形的类型
●PHIGS的输出流水线有5个坐标系;具有高度的动态性、输出交互性的三维图形,可以在系统中高效率地描述应用模型,迅速修改图形模型的数据,并能绘制显示修改后的图形模型
●GL的输入/输出处理用于启动输入输出设备,并对相应的事件队列进行处理,提供了更丰富的图元,如各种曲面。
6、GKS-3D与PHIGS的主要区别是什么?
用GKS-3D输出图形的过程是什么?
主要区别:
(1)数据结构
GKS-3D:
提供了单层、平面的图形数据结构
其图段用来表示的是图象信息而不是图形的构造信息,
其图段数据经过坐标规格化变换后,不再是定义该图段的坐标空间的数据
PHIGS:
其结构始终是在造型空间中定义的数据
(2)可修改性
GKS-3D:
产生的图段,其内容不能修改,但影响图段整体特征的某些属性,如可见性、可检测性、图段的几何变换等是可以修改
PHIGS:
其任何结构,结构中的任何一部分元素则可以在任何时候进行修改
(3)属性的存储
GKS-3D:
把图素属性和图素一起存入图形数据结构中,为了修改某图段中某个图素的属性,必须去除该图素的旧属性,重新生成一个新属性
PHIGS:
只要当遍历一个结构并要显示该结构时,其中的图素才能变成输出图素,此时,那些属性结构元素是灵活的,图形数据的修改也是容易的。
(4)输出流水线
GKS-3D:
采用三种坐标系,用户坐标系、设备坐标系和规格化设备坐标系
PHIGS:
采用五种坐标系,造型坐标系、用户坐标系、观察坐标系、规格化的投影(空间)坐标系、设备坐标系
过程:
图素-》规格化变换=》图段变换=》规格化裁减=》视图变换=》裁减操作和视图映象=》工作站裁剪和变换=》显示输出
10、IGES和STEP有什么共同点和不同点?
共同点:
IGES和STEP都是与CAD/CAM系统提供中性产品数据的公共资源和应用模型,它涉及到土建工程、机械、结构、电气、电子工程及船舶结构等领域,为了解决数据在不同的CAD/CAM系统之间进行数据传送的问题,定义了一套表示CAD/CAM系统中常用的几何和非几何数据格式以及相应的文件结构。
不同点:
IGES是1982年ANSI标准,而STEP是ISO/IECJTCL下的SC4开发的ISO标准,它克服了IGES的一些缺点:
(1)不能精确地完整地转换数据,其原因是不同的CAD/CAM系统之间许多概念不一样,使得某些定义数据像表面定义数据会丢失
(2)不能转换属性信息
(3)层信息常丢失
(4)不能把两个零部件的信息放在一个文件中
(5)产生的数据量太大,以至许多CAD系统难以处理(无论是时间还是存储容量上都不适应)
(6)在转换数据的过程发生的错误很难确定,常常需要人工去处理IGES
文件,对此要花费大量的时间和精力。
而STEP克服了IGES中存在的问题,扩大了转换CAD/CAM系统中几何拓扑数据的范围,STEP即产品模型数据的公共资源和应用模型。
STEP的产品模型数据是覆盖产品整个生命周期的应用而全面定义的产品所有数据元。
在STEP中采用了形状特征信息模型进行各种产品模型定义数据的转换,强调建立能存入数据库中的一个产品模型的完整表示,而不只是它的图形或可视的表示
IGES采用了对实体单元进行数据描述的文件结构,而STEP采用了形状特征信息模型进行各种产品模型定义数据的转换的概念模式;
IGES的文件格式为目录入口、参数节、整体节、结束节和定义信息5个节;STEP的产品信息分为应用层、逻辑层和物理层3个层结构。
第三章:
P163
1、你所用的图形软件是属于子程序库、专业语言和交互命令,还是这三种形式的混合形式,或是其他的形式。
你认为你所用的图形软件的成功和不足之处是什么?
有哪些改进意见?
(1)使用的图形软件采用C语言作为主语言,属于子程序库、专用语言和交互命令混合;
(2)成功之处:
使用方便、便于扩充、便于用户加入用户自己编写的源程序或目标代码;不足之处是格式随所用主语言格式而定,修改源程序比较麻烦;
(3)实现与其他语言(非主语言)的兼容运行,交互式修改运行结果,而不需要人为地查看、修改源程序。
2、面向应用程序的接口通常有哪几种形式?
你认为哪一种形式更方便应用和扩充应用功能?
面向应用程序的接口有子程序库、专用语言和交互命令三种形式;
交互任务是用户最关注的事,因此交互技术是完成交互任务的手段,故交互命令是用户接口中应用最普遍、效率最高的一种形式,对交互设备、交互任务、交互技术以及控制方式等的综合处理是完成交互命令和实现交互命令的依据。
总的来说,交互命令更方便应用和扩充应用功能。
3、请列出你所用的交互系统中所涉及到的交互任务和交互技术,是否有本章书中没有提及的交互任务和交互技术?
若有,能否对其进行分解,使之和本章书中介绍的交互任务和交互技术相匹配。
就目前有用过的交互任务和交互技术而言,均在本章范围内;
(1)交互任务:
区域选择、文本输入、定路径和控制
(2)交互技术:
选择技术、定位技术、定路径技术、文本技术、徒手画技术和拖动技术。
6、常见的交互任务有哪几种?
你认为哪一种交互任务最难完成?
常见的交互任务有8种
定位、选择、文本、定向、定路径、定量、三维交互任务、组合交互任务
其中三维交互任务和组合交互任务最难完成
因为三维交互任务涉及定位、选择和旋转,用户难以区分屏幕上游标选择到对象的深度值和其他显示对象的深度值。
组合交互任务主要包含对话框、构造和动态控制三种,其实现的前面几种的结合,是动态的,故其完成难度最大。
7、常见的交互技术有哪几种?
你认为哪一种交互技术最容易使用?
选择技术、定位技术、定向技术、定路径技术、定量技术、文本技术、橡皮筋技术、徒手画技术、拖动技术;其中定量技术最容易使用。
11、交互式用户接口常见的工作方式有几种?
你认为哪一种较实用?
固定域输入输出方式
问答方式
表处理方式
命令语言
菜单方式
图形符号方式
12、请用菜单驱动方式、数据表格驱动方式和事件驱动方式完成同一个实际的交互任务。
并比较它们之间的难易程度和工作量。
1)对于完成同一个实际的任务来说,一般而言菜单驱动方式较数据表格驱动方式和事件驱动方式容易
2)相对于用户的工作量来说,菜单驱动方式较数据表格驱动方式和事件驱动方式的工作量大。
第四章:
P215
1、将中点画线算法推广以便能画出任意斜率的直线
MidPointLine(x0,y0,x1,y1,color)
{
inta,b,delta1,delta2,d,x,y;
a=y0–y1;
b=x1–x0;
d=2*a–b;
delta1=2*a;
delta2=2*(a+b);
x=x0;
y=y0;
if(a
drawpixel(x,y,color);
else
drawpixel(y,x,color);
while(x>x1)
{
If(d<0)
{
x++;
y++;
d+=delta2;
}
Else
{
X++;
D+=delta1;
}
Putpixel(x,y,color);
}
Else
While(x { If(d<0) { x--; y++; d-=delta3; } Else { x--; d-=delta1; } Putpixel(x,y,color); } } 2、采用整数Bresenham算法,为一台计算机编制直线扫描转换程序。 从键盘敲入两端点坐标,就能在显示器屏幕上画出对应的直线。 VoidDrawLine(intcolor) { intx0,y0,x1,y1,color,I; scanf(“%d,%d,%d,%d”,&x0,&y0,&x1,&y1); dx=x1–x0; dy=y1–y0; e=-dx; x=x0; y=y0; for(i=0;i<=dx;i++) { putpixel(x,y,color); x=x+1; e=e+2*dy; if(e>=0) { y=y+1; e=e–2*dy; } } } 4、试编写按逆时针方向生成第一个8分圆的中点算法 讨论如何从(R/√2,R/√2)到(R,0)顺时针地确定最佳逼近于该圆弧的像素序列 假定x坐标为xp的像素中与该圆弧最近者已确定,为P(xp,yp) 那么,下一个像素只能是正下方的P1(Xp,Yp-1)或右下方的P2(Xp+1,Yp-1)两者之一,如图所示: P=(Xp,Yp) P1MP2 构造函数: F(x,y)=x2+y2-R2 对于圆上的点,F(x,y)=0; 对于圆内的点,F(x,y)<0; 对于圆外的点,F(x,y)>0; 假设M是P1和P2的中点,即M=(Xp+0.5,Yp-1) 当F(M)<0时,M在圆内,说明P1离圆弧更近, 应取P1作为下一像素 当F(M)>0时,M在圆外,说明P2离圆弧更近, 应取P2作为下一像素 当F(M)=0时,M在圆上,在P1和P2之中随便取一个, 取P2作为下一像素 构造判别式 d=F(M)=F(Xp+0.5,Yp-1) =(Xp+0.5)2+(Yp-1)2–R2 当d<0时,取P1作为下一像素 而且再下一个像素的判别式为 d1=F(Xp+0.5,Yp-2) =(Xp+0.5)2+(Yp-2)2–R2 =d–2Yp+3 所以,沿正下方,d的增量为–2Yp+3 当d>=0时,取P2作为下一像素 而且再下一个像素的判别式为 d2=F(Xp+1.5,Yp-2) =(Xp+1.5)2+(Yp-2)2–R2 =d+2Xp–2Yp+5 =d+2(Xp–Yp)+5 所以,沿正下方,d的增量为2(Xp–Yp)+5 由于我们这里讨论的是按顺时针方向生成第一个8分圆,因此,第一像素是(R/√2,R/√2) 判别式的初值为 d0=F(R/√2+0.5,R/√2–1) =1.25-R/√2 =1.25–R/1.414 MidpointCircle(r,color) Intr,color; { floatx,y; floatd; x=r/1.414; y=r/1.414; d=1.25–r/1.414; drawpixel(x,y,color); while(y>0) { if(d<0) { d+=3-2*y; y--; } else { d+=5+2*(x-y); x++; y--; } drawpixel(x,y,color); } } 5、假设圆的圆心不在原点,试编写算法对整个圆进行扫描转换 (1)用bresenham画圆法,设圆心坐标为(a,b) bresenham_circle(r,color) intr,color; { intx,y,delta,delta1,delta2,direction; x=a; y=b+r; delta=2*(1-r); while(y>=0) { drawpixel(x,y,color); if(delta<0) { delta1=2*(delta+y-b)-1; if(delta1<=0) direction=1; else direction=2; } elseif(delta>0) { delta2=2*(delta-x+a)-1; if(delta2<=0) direction=2; else direction=3; } else direction=2; switch(direction) { case1: x++; delta+=2*(x-a)+1; break; case2: x++; y++; delta+=2*(x-a-y+b+1); break; case3: y--; delta+=-2*(y-b)+1; break; } } } (2)采用中点画圆算法 #include #include #include voidMidPointCircle(xc,yc,r,color) { intx=xc,y=yc–r; intdeltax=3,deltay=2–r–r,d=1–r; putpixel(xc,yc,color);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机图形学 计算机 图形学 答案