雍俊海JAVA程序设计教程第2版 课后答案Word文档下载推荐.docx
《雍俊海JAVA程序设计教程第2版 课后答案Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《雍俊海JAVA程序设计教程第2版 课后答案Word文档下载推荐.docx(56页珍藏版)》请在冰豆网上搜索。
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、列出你所用过的窗口系统中与观感有关的元素的功能,如图标、滚动棒、菜单等使用滚动条
当文档、网页或图片超出窗口大小时,会出现滚动条,可用于查看当前处于视图之外的信息。
下面的图片显示滚动条的组成部分。
使用菜单
大多数程序包含几十个甚至几百个使程序运行的命令(操作)。
很多这些命令是组织在菜单下面。
就像饭馆的菜单一样,程序菜单显示选择列表。
为了使屏幕整齐,会隐藏这些菜单,只有在标题栏下的菜单栏中单击菜单标题之后才会显示菜单。
例如,单击“画图”菜单栏中的“图像”可显示“图像”菜单:
3、列出你所用过的图形输入、显示及输出设备的名称、型号、生产厂商、出厂时间及其主要优缺点。
略
4、比较个人计算机与工作站的图形功能
个人计算机仅限于符合二维,又是单任务操作方式
工作站可处理二、三维,多任务操作方式
区别个人计算机工作站
显示分别率640X4801024X900以上
具有8个以上位面
显示器尺寸12~14英寸16、19、27英寸
图形处理能力符号或二维具有反走样、线和面消隐、
光照模型等处理硬件;
同时
还具有丰富的图形生成和
处理软件
主要处理二维或三维图形、
图象
计算机性能主要取决于微处理器的性具有更强的处理功能,在操能作系统、页面虚拟存储器和
主要用途都有所不同
操作方式单任务多任务、多进程
l个人计算机的主要功能是字符处理,而工作站不仅有字符处理功能,还有较强的图形处理功能
l个人计算机的显示分辨率较小,一般在640X480的图形处理符号或二维图形;
而工作站为了满足强大的图形处理,显示分辨率为一般为1024x1024的二维或三维图形l个人计算机的显示器相对工作站较小
l个人计算机的图形系统是由个人计算机加上图形输入输出设备和有关的图形支撑软件集成起来的系统,其性能取决于个人计算机所采用的微处理器芯片,个人计算机的图形功能由于受到软件和硬件的限制,只适合处理比较简单的事情;
个人计算机的显示分辨率一般在640X480的图形处理符号或二维图形
l而工作站在处理器、总线设计、存储器、操作系统等多个方面都有比个人计算机优越的地方,它配有专业的图形输入输出设备,并配有图形处理器以处理大量的复杂的图形运算;
它可以处理多任务进程、处理显示分辨率为1024x1024的二维或三维图形、具有高速的科学计算能力、丰富的图形处理、灵活的窗口及网络管理功能的交互式计算机系统,它的图形功能比个人计算机图形系统强德多,但在造价上远高于个人计算机。
6、具有相同分辨率的彩色光栅显示器与黑白光栅在结构上有何区别?
彩色:
对于红、绿、蓝的三个原色有三个位面的帧缓存和三个电子枪,每个位面的帧缓
冲对应一个电子枪即对应一种颜色;
对每个颜色的电子枪可以通过增加帧缓存位面来提高颜色种类和灰度级,通过三种原色的组合可以产生不同种类的颜色。
彩色光栅显示器主要是有红、绿、蓝的三个原色所组成,每种原色电子枪有8个位
面的帧缓存和8位的数模转换器,每种原色有256种亮度,三种原色组合可为16771216种颜色,也可以通过颜色查找表查找,故帧缓存位数至少24位。
黑白:
黑白光栅显示器的帧缓存是一块连续的计算机存储器,每个像素需1位存储器,每
个存储器只有0或1两个状态。
因此一个位面的帧缓存只能产生黑白图形。
可以增加象素点的位面数,通过多个位面显示出多种灰度级。
7、在光栅显示器上显示斜线的45º
角时常会发生锯齿状,请考虑减少锯齿状效果的各种方法并说明采用这些方法的代价。
在光栅图形显示器上显示斜线时常会发生锯齿,这是由于直线或多边形边界在光栅图形显示器的对应图形都是由一系列相同亮度的离散象素构成的。
这种用离散量表示连续亮引起的失真称为走样,而用于减少或消除这种效果的技术,称为反走样。
一般而言,减少锯齿有三种方法,下面以直线扫描转换为例,分别介绍三种方法:
(1)提高分辨率
假设把显示器的分辨率提高一倍,虽然直线经过2倍的象素,锯齿也会增加一倍。
但由于每个锯齿在X方向和Y方向都只有低分辨率的一半,所以效果看起来会好
一些,这种改进方法是以4倍的存储器代价和4倍的扫描转换时间获得的。
因此增加分辨率是不经济的方法,它只能减轻,不能消除锯齿。
(2)简单的区域取样
在直线扫描算法假定象素是数学上的一个点,象素的颜色是由对应于象素中心的图形中一点的颜色决定的。
但是,实际上象素不是一个点,而是一个有限区域。
屏幕上所画的直线段不是数学意义上的无宽度的理想线段,而是一个宽度至少为一个象素单位的线条。
因此,把屏幕上的直线看成是长方条形更为合理。
在绘制直线条时,所有与该长方条相交的象素都采用适当的宽度给予显示。
这要求显示器各象素可以用多灰度显示。
例,设象素中心是在网格点上的不相交的正方形,象素的灰度与它落在直线条内的面积成正比。
在多灰度黑白显示器上,若一个象素整个落在线条上,则将它置成前景色。
若一个象素与线条部分相交,根据相交部分的大小来选择不同的灰度,相交部分大的象素前景色成分更多一些,相交部分小的象素前景色成分更少一些。
这种方法将产生模糊的边界,以此来减轻锯齿效应。
在实际应用中,常采用盒式滤波器
(3)加权区域取样
加权区域取样方法采用更为优化的圆锥形滤波器。
圆锥的底圆中心在当前象素中心,底圆半径为一个单位,锥高为1。
当直线条经过该象素时,该象素的灰度值是在二者相交区域上对滤波器进行积分的积分值。
用这种圆锥形滤波器有如下特点:
一是接近理想直线的象素将被分配更多的灰度值。
二是相邻两个象素的滤波器相交,所以直线条经过该相交区域时,将对这两个象素分配给适当的灰度值,这有利于缩小直线条上相邻象素的灰度差。
第二章:
P128
1、为什么要制定和采用计算机图形标准?
已经ISO批准的计算机图形标准软件有哪些?
为了提高计算机图形软件、计算机图形的应用软件以及相关软件的编程人员在不同的计算机和图形设备之间的可移植性。
已获ISO批准的计算机图形标准软件有:
l计算机图形核心系统(GKS)及其语言联编
l程序员层次交互式图形系统(PHIGS)及其语言联编
l三维图形核心系统(GKS-3D)及其语言联编
l计算机图形元文件(CGM)
l计算机图形接口(CGI)
l基本图形转换规范(IGES)
l产品数据转换规范(STEP)等
2、CGI标准的主要功能是什么?
试用CGI中的图形输出功能绘制一副机械零件图。
CGI的目的是提供控制图形硬件的一种与设备无关的方法,它可以看成是图形设备驱动程序的一种标准。
CGI在用户程序和虚拟设备之间,以一种独立于设备的方式提供图形信息
的描述和通信,使有经验的用户最大限度地、灵活地直接控制图形设备。
它所提供的功能集包括:
l控制功能集
l独立于设备的图形对象输出功能集
l图段功能集
l输入和应答功能集l产生修改、检索和显示以像素数据形式存储的光栅功能集
3、CGM对文件管理的存储结构是采用何种形式?
你认为应用这种结构有什么优缺点?
采用生成多个与设备无关的图形定义,提供随机存取、传送、简洁定义图象的图形生成元文件的存储结构,它不是应用程序员的标准,而是为系统和系统开发而设计的,与CGI配套供用户使用。
优点是:
它具有通用性,即CGM应能广泛适应各种设备、应用系统。
例如同一个文件即可在低分辩率的单色图形终端上输出,也可在高分辨率的多笔绘图仪上输出,或在高性能的光栅图形显示器上输出。
这种结构的缺点是:
它只是一个静态的图形生成元文件,即它不能产生和定义图形的动态效果,例如不能实现动态的几何变换。
4、GKS、PHIGS、GI在应用程序中起的作用?
试比较它们在输入输出功能上的相同和不同之
处?
GKS在应用程序和图形输入输出设备之间提供了功能接口,包括:
控制功能、输出功能、输出属性、变换功能、图段功能、输入功能、询问功能、实用程序、元文件处理和出错处理。
PHIGS向应用程序提供控制图形设备的图形系统接口,能够在系统中高效率地描述应用模型,迅速地修改图形模型的数据;
并能够绘制显示修改后的图形模型。
GL是工作站或UNIX上广泛应用的一个工业标准图形程序库,和PHIGS同样是提供用户与程序图形系统接口。
包括基本图素、坐标变换、设置属性和显示方式、输入/输出处理、真实图形显示。
相同点:
三个都是提供用户与输入输出设备之间的图形系统接口的标准图形程序库。
不同点:
不同的数据结构
可修改性
属性的存储
输出流水线等
具体而言:
lGKS有6种输入功能和6种输出图素,在输入功能上可对各种设备初始化,设定设备工作方式、确定请求采样和事件输入;
在输出功能上,可确定输出图形
的类型
lPHIGS的输出流水线有5个坐标系;
具有高度的动态性、输出交互性的三维图形,可以在系统中高效率地描述应用模型,迅速修改图形模型的数据,并能绘
制显示修改后的图形模型
lGL的输入/输出处理用于启动输入输出设备,并对相应的事件队列进行处理,提供了更丰富的图元,如各种曲面。
6、GKS-3D与PHIGS的主要区别是什么?
用GKS-3D输出图形的过程是什么?
主要区别:
(1)数据结构
GKS-3D:
提供了单层、平面的图形数据结构
其图段用来表示的是图象信息而不是图形的构造信息,其图段数据经过坐标规格化变换后,不再是定义该图段的坐标空间的数
据
PHIGS:
其结构始终是在造型空间中定义的数据
(2)可修改性
产生的图段,其内容不能修改,但影响图段整体特征的某些属性,如可见性、可检测性、图段的几何变换等是可以修改
其任何结构,结构中的任何一部分元素则可以在任何时候进行修改
(3)属性的存储
把图素属性和图素一起存入图形数据结构中,为了修改某图段中某个图素的属性,必须去除该图素的旧属性,重新生成一个新属性
只要当遍历一个结构并要显示该结构时,其中的图素才能变成输出图素,此时,那些属性结构元素是灵活的,图形数据的修改也是容易的。
(4)输出流水线
采用三种坐标系,用户坐标系、设备坐标系和规格化设备坐标系
采用五种坐标系,造型坐标系、用户坐标系、观察坐标系、规格化的投影(空间)坐标系、设备坐标系
过程:
图素→规格化变换→图段变换→规格化裁减→视图变换→裁减操作和视图映象→工作站裁剪和变换→显示输出
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、请用菜单驱动方式、数据表格驱动方式和事件驱动方式完成同一个实际的交互任务。
并比较它们之间的难易程度和工作量。
事件驱动的真实工作过程
数据表格驱动方式:
程序和表格关联,用表格(如EXCEL)的形式将变量传递到程序中进行一系列操作,或再用表格输出,不同于消息驱动的WINDOWS程序机制。
使用表格驱动建立菜单,可以很方便很简单地管理自定义菜单,节约开发与维护成本。
《太平洋保险终端系统》交易界面实现了参数化的配置方式,系统使用屏幕定义文件
和表格定义文件来定义交易屏幕,表格定义文件定义了表格的基本属性和表格的列,屏幕定义文件定义了屏幕的基本属性和屏幕上的栏位和表格的位置。
屏幕和表格定义文件都需要引用数据字典里面的栏位定义。
界面驱动包括屏幕驱动和表格驱动,其功能包括设置栏位缺省值和缺省属性(是否可
输入、是否必输入、是否绑定下拉菜单pklist),响应各种系统事件(屏幕前后事件、栏位前后事件、最后栏位后事件等),响应热键(ESC、DEL、PAGEUP、PAGEDOWN、CTRL_XX等),动态改变屏幕属性(多页显示的翻页、拆分屏幕等),发起二段式交易等等。
屏幕驱动和表格驱动是提供给开发人员的统一接口,开发人员通过实现该接口的方式开发功能模块。
事件驱动方式:
1、启动应用程序,装载和显示窗体,产生Form_Load和Form_Show事件
2、窗体或窗体上的控件接收事件,事件可由用户引发(例如键盘或鼠标操作),可由系统引发(例如定时器事件),也可由代码间接引发(例如当代码装载其他窗体时产生的Load事件)
3、如果在相应的事件过程中存在代码,就执行代码4、应用程序等待下一次事件
例:
.获取和修改计算机名字的方法1.)插入一个新模块,在其中添加如下代码:
′声明GetComputerName
DeclareFunctionGetComputerNameLib〃kernel32〃Alias〃
GetComputerNameA〃(ByvallpBufferAs
String,nSizeAsLong)AsLong
′声明SetComputerName
DeclareFunctionSetComputerNameLib〃kernel32〃Alias〃
SetComputerNameA〃(ByvallpComputerNameAsString)AsLong
′定义一个获取计算机名字的函数
PublicFunctionGetCName(CName)AsBoolean
DimsComputerNameAsString‟计算机的名字
DimlComputerNameAsLong
‟计算机名字的长度
DimlResultAsLong
‟GetComputerName的返回值
DimRVAsBoolean
′GetCName返回值,若为TRUE则表示操作成功
lComputerNameLen=256
sComputerName=Space(lComputerNameLen)
lResult=GetComputerName(sComputerName,lCompputerNameLen)
IflResult〈〉0ThenCname=Left$(sComputerName,lComputerNameLen)RV=True
ElseRV=False
EndIf
GetCName=RV
EndFunction
′定义一个修改计算机名字的函数
PublicFunctionSetCName(CName)AsBoolean
lResult=SetComputerName(CName)
IflResult〈〉0Then
RV=True′修改成功
SetCName=RV
2).在窗体中添加一命令按钮Command1,双击该按钮并在其中添加如下代码:
SubCommand1-Click()
DIMCNASString
x=GetCName(CN)Print〃ThisComputerNameis:
〃,CNCN=〃MYCOMPUTER〃
x=SetCName(CN)
Print〃NowtheComputernameis:
〃,CN
EndSub
1)对于完成同一个实际的任务来说,一般而言菜单驱动方式较数据表格驱动方式和事件驱动方式容易
2)相对于用户的工作量来说,菜单驱动方式较数据表格驱动方式和事件驱动方式的工作量大。
第四章:
P215
1、将中点画线算法推广以便能画出任意斜率的直线
算法设计:
(1)输入直线的起点坐标P0(x0,y0)和终点坐标P1(x1,y1).
(2)定义直线当前点坐标x和y,定义中点偏差判别式d、直线斜率k、
像素点颜色rgb
(3)x=x0,y=y0计算d=0.5-k,k=(y1-y0)/(x1-x0),rgb=RGB=(0,0,255).
(4)绘制点(x,y),判断d的符号,若d&
0,则(x,y)更新为(x+1,y+1),
d更新为d+1-k,否则(x,y)更新为(x+1,y),d更新为d-k.
(5)如果当前点x小于(x1,重复步骤(4),否则结束。
程序主要代码:
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&
b)
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);
While(x&
x1)
x--;
d-=delta3;