基于JAVA的D图形开发技术-文档DOC.doc_第1页
基于JAVA的D图形开发技术-文档DOC.doc_第2页
基于JAVA的D图形开发技术-文档DOC.doc_第3页
基于JAVA的D图形开发技术-文档DOC.doc_第4页
基于JAVA的D图形开发技术-文档DOC.doc_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于JAVA的D图形开发技术-文档(DOC) 作者: 日期:基于Java的3D图形开发技术龚建成 张佑生 (合肥工业大学,安徽 合肥)安徽工程科技学院,安徽 芜湖)安 徽 工 程 科 技 学 院 学 报!#$年%&(%)* +,-./0, 1 %&23+45 6 789:公司提供了一个;3的?%+,3,在A+B+$C程序中利用它,可方便地调用;3图形* ;30图形的调用和%&图形的调用基本相同,将调用;30图形文件的部分单独作为一个文件,进而可将主程序的重点放在对形体的动画处理等方面*此外CDE等图形文件也都有相应的?%+,3将其应用到A+B+$C中*#F G A+B+$C的形体组合A+B+$C应用程序中,一般都有多个三维形体,只有对其进行合理的组合,才能对指定的形体进行几何变换,进行某种操作,生成所需要的交互式三维应用程序或三维动画* A+B+$C为此提供了多个用于形体组合的对象,它们是E3%HI及其子孙类* A+B+$C场景图的底部为;/3)H+0 94/B35,每一个场景图只能有一个;/3)H+0 94/B35,;/3)H+0 94/B35上面为?%J+0* E3%HI类型的对象只能有一个父类,对于K3+4J.LE3%HI对象来说是?%J+0*而其他E3%HI类型的对象,可以将其他E3%HI类型的对象作为父类*如23+45M%3E3%HI对象可以将E3%HI对象作为父类,也可以将另一个23+45M%3E3%HI对象作为父类*1 N 6 K3+4J.E3%HI对象* K3+4J.E3%HI是A+B+$C场景图中一个重要节点,它能够附在一个?%J+0节点上,作为一个单元进行编译*将一个K3+4J.E3%HI放在一个?%J+0上形成?%J+0的一个分支,使其组合的内容激活,一旦形体、灯光等被激活,它们就可以根据自身的J+I+&/0/)O的设定,产生相应的变化*1 # 6 23+45M%3E3%HI和23+45M%3$C对象* 23+45M%3E3%HI定义一个通过设置,可以移动、旋转、放大缩小的局部坐标系*它有两个M0+P5:Q?RDS2(Q:8TR(US(VQC7 Q?RDS2(Q:8TR(USD(W2V *这两个M0+P5通过设定,可以控制坐标系在程序运行过程中的运行方式,如果设置不当,程序可能无法运行* 23+45M%3$C用来表示一个G X G的双精度浮点数矩阵,进而表示所指定的坐标的坐标变换,如旋转、放大缩小、平移等*#F Y A+B+$C的交互作用Z G A+B+$C借助A+B+语言强大的事件处理功能,可用来编写复杂交互式的虚拟场景* A+B+$C的事件处理方法使用的是A+B+ N* #版本的事件处理模型* A+B+ N* #事件程序中,在类定义时,用/I04)5说明该类实现的一个或多个监听器,如IH&0/J J0+55 P+ )4,5 QII0) /I04)5 D/4,%?/5)43,QJ)/%4?/5)43,W)?/5)43,-.J&%U4H?/5)43 _ 但这种方法主要用于特定显示界面的设计及一些状态的变化处理方面*如果要编写更复杂的交互式三维应用程序,则需要用到A+B+$C的K.+B/%3对象* K.+B/%3有K/00&%+3,、?%,、W4)3I%0+)%35等子类*编写复杂的交互式三维对象时,经常会感到计算机速度不够*可以有多种方法解决速度慢的问题* A+B+$C编程可通过灵活应用?RC对象,提高计算机的运行速度*其他三维图形技术也用到了?RC技术,如;(U?语言就用到了?RC技术,;(U?语言就有?RC节点* A+B+$C的?RC对象通过设定,可以使计算机根据三维场景图的需要,在程序运行时,有效处理复杂形体:当复杂物体离观察点很远时,就用一个简单的形体替代,当复杂形体离观察点不远不近时,就用一个近似的形体替代,当复杂物体离观察点很近时,就显示复杂形体自身,这样可以有效提高计算机的运行速度* K/00&%+3,是K.+B/%3的子类,利用K/00&%+3,可生成一个局部坐标系,此坐标系的a b轴方向一直指向观察者的眼镜*这表示在三维空间移动位置及方向时,K/00&%+3,所在的局部坐标系中的形体将一直面向着我们,也即自动绕着局部坐标系的c轴旋转*A+B+$C提供的K.+B/%3方面的9)/0/)O一共有四组:/4)3I%0+)%3(用于生成形体的曲线运动)7 O&%+3,(用于处理键盘输入的内容)7 %H5(用于处理鼠标对坐标变化的控制)7 I/J/4P(用于处理对象的点击拾取)7 W4)3I%0+)%35可用于建立三维空间中形体绕着样条曲线运动的轨迹,只要输入形体及多个关键点的数据,就可控制形体绕着这几个关键点做空间的曲线运动,同时可控制形体的比例变化及旋转* W4)3I%0+)%35在程序中的具体应用是生成一个2-KdOT3+对象* dO&%+3,可用于监听键盘输入的内容,通过判断第!期 #龚建成,等:基于$%&%的(图形开发技术类如)*+,-、./012、3456+7/012、8,49:2、%99:47415:、;:?4-/7A、.:18/7、3:,4B*/7、C/79,、)*16等,类似于&DC)语言的相应节点,是$%&%(场景图的重要组成部分EF G H I/2:J/A9/1:1-类E用于表示I/2:的属性,它不是$4B4(场景图的组成部分,而是被场景图所引用,用来修饰某些):4对象,如某个颜色可以被多个形体引用E 3/0128及其子类、;7418/7A(并不是I/2:J/A9/1:1-的子类,但它们同样作用于):4对象,因而也是I/2:J/A9/1:1-类型的对象EG利用$4B4( %K进行编程的要点分析GL ! $4B4中点、线、面的生成编写$4B4(的点、线、面时,需要给出顶点坐标数组、顶点坐标对应的颜色数组等内容,输入这些内容需要用到M:/A:-7N%774N提供的多个方法,所有的点、线、面类都是M:/A:-7N%774N的子类或孙类,因而都继承了它所有的方法E具体内容可查看相关%KEGL G .,49:(对象、%99:47415:对象及3/0128对象F ! H .,49:(对象E点、线、面的各种对象,均为M:A/-70%774N的子孙类,它们只是几何对象,不能单独放置在三维场景图中E真正的三维形体对象应当既具有几何特征,同时也应具有材质特征,.,49:(就 是 用 来 定 义 三 维 形 体 对 象 的 对 象E它 有 下 面 一 些?4+8:%)OPQMROCR;DSQDR%(T %)U)OPQMROCR;DSQPDK;RT %)OPQ%R%D%IJRQDR%(T %)OPQ%R%D%IJRQPDK;RT %)U)OPQJO)K.KOIQ3OVI(.QDR%(T %)OPQJO)K.KOIQ3OVI(.QPDK;RE这些?4+8可以通过8:-J494UW*?*-N设定,使形体具有某种特征,从而使程序能在运行过程中产生相应的变化效果EF G H %99:47415:对象E .,49:(对象给出了三维空间里的形体,形体除了有几何属性外,还应有外观属性,如颜色、纹理等,形体的外观属性由%99:47415:对象提供E %99:47415:是I/2:J/A9/1:1-的子类,每一个%99:47415:对象均可以被多个.,49:(对象所用EF H 3/0128对象E $4B4(程序里,经常需要设置一些灯光、声音、行为等对象,这些对象在使用时,必须给出它们的作用范围,需要用到3/012*1+.9,:7:对象EGL 常用三维图形文件的调入复杂形体很难直接通过编程实现E这时可通过调用其他格式的三维图形文件获得复杂形体,如直接调用&7A?GE X格式、O3$格式的三维图形文件,通过处理,间接调用(PM、(YZ、(.格式的三维图形文件E这些格式的三维形体可以非常方便地应用在$4B4(程序中,进而提高$4B4(程序地编程效率E在调用O3$文件时,可以编两个程序,一个是主程序,一个是专门用来调用O3$文件的/WU?/42E 4B4E在主程序的57:4-:.5:1:M749,()方法里,在定义背景、声音、灯光等分支后,再定义一个OWU:5-Z*?:兑现/W和一个8对象,并用OW:5-Z*?:的?/42方法调用/W文件,调用成功后将调入的结果放入/W对象里面E37415,M7/09 /WD/- 1:= 37415,M7/09 F H W 10?TW 1:= OW)/42 F 94-,14A: H T/W;7418E 422J,*?2 F W H T调入的/W文件所定义的三维形体有大有小,这时可在程序中定义一个改变了比例的坐标系,这样即使很大的/W形体也可显示在屏幕上E通过下面几个语句,使坐标系发生了比例变换,成为原来大小的XE 倍:;7418/7AM7/09 /W;7418 1:= ;7418/7AM7/09 F H T;7418/7A( -2 1:= ;7418/7A( F H T-2E 8:-.54?: F XE H T/W;7418E 8:-;7418/7A F -2 H T安 徽 工 程 科 技 学 院 学 报!#$%年在&()*+,-.,/0节点之上的1图2给出了3(4( %5应用程序的场景图6 7 8129 # 3(4(%5 :;1 -?A(1 =%和=(4(1 4?B-(CD,其结构层次6 7 8如下E3(4(1 -?A(1 =%FAC/(GH)A4?*?I,B(G?FA?J;DK*AB(GL,K;DK*AB(GM)4A,-?)CNBB?)%5O()4/*%5NB?)?.(0DPL=?BCQ,?.,/0I?(+Q,?O,-0,)?)C&()*+,-%5=(4(1 4?B-(CDR(CA OG(*?*其中,=(4(1 -?A(1 =%提供了2$多个类及接口,是3(4( %5的核心部分;=(4(1 4?B-(CD则包括了一些矩阵和数组运算的类1 3(4( %5还提供了一个重要的有助于快速编程的应用类型的包,即B,-1 */)1 =%1 /CAG*包 (HCAGACK)S HCAGACK不是3(4( %5编译环境的核心组成部分,可以不用它,但使用它会大大提高程序的编写效率1一些基本形体如立方体、圆柱等,可由HCAGACK方便地生成;对复杂形体的生成,则需对基本形体进行一系列的几何坐标变换来实现129 % 3(4(%5 :;中类的关系6 # 83(4(%5所提供的类S根据其作用主要有两种类型:Q,?,Q,?O,-0,)?)C1T 2 U Q,?类1含有.,/0及I?(+两个子类1 .,/0类用于将形体等按一定的方式组合在一起1 I?(+图2 3(4(%5应用程序的场景图摘要:,343语言具有结构中立性、网络分布性等优点,它的*/图形-56在开发6789:798及;上的图形网络应用程序时有极大优势0因而得到了迅速地推广和应用1介绍,343*/ -56的特点,总结了,343*/ -56的组成,对,343*/数据结构、应用程序的编程要点作了重点评述,对如何利用,343*/ -56进行应用程序开发作了初步研究1关 键 词:,343语言;,343*/;6789:798;场景图中图分类号:1 ,343*/ -56是,343语言的*/图形用户接口,,343语言提供的内在机制使*/图形图像程序具有“一次写成,到处运行”( ?:89 A7B90 :C7 37D?E9:9 +的特点0开发出的图形系统拥有;9F特性,因而受到了广泛关注1本文从各个侧面对,343*/图形开发技术作了较详细的论述1! ,343 */图形开发技术简介,343*/是,343!1 %的一个标准扩展,它从高层次为开发者提供对三维实体的创建、操纵和着色,使开发工作变得较为简单1 ,343*/的低级-56依赖于现有三维图形系统,如/:9B8*/、G5HIJK等1它为我们编写三维应用程序提供了一个非常完善的-56,其功能主要有= % :( ! +生成简单或复杂的形体(也可以直接调用现有的三维形体);( % +使形体具有颜色及具有透明效果;( * +在三维环境中生成灯光及移动灯光;( +具有行为(L9E34A:)的处理判断能力(键盘、鼠标等);( +可以生成雾、背景、声音等;( $ +可以使形体变形、移动、生成三维动画;( # +可以编写非常复杂的应用程序,用于各种领域0如.M1!N ! ,343*/的场景图数据结构,343*/的数据结构采用/-J(/:9B89O & -BDBPB J:3QE)式的场景图 (RB979 J:3QE),即具有方向性的不对称图形1图中线和线的交汇点称节点(IAO9),这些节点都是,343 */类的实例;线(-:B)表示实例之间的关系1最底层的节点是.:8C3P S749:T9,每个场景图只能有一个.:8C3P S749:T91在.:8C3PS749:T9之上是KAB3P9节点,每个程序可以有一个或多个KAB3P9,KAB3P9节点之间可以相互切换,不过大多数程序只有一个KAB3P91每一个KAB3P9之上可有一个到多个L:37BEJ:ACQ节点1要建立三维应用环境,必须建立所需要的形体(RE3Q9),给出形体的外观(-QQ93:37B9)及几何信息(J9AU98:D),再把它们摆放在合适的位置,这些形体及其摆放位置都建立在L:37BEJ:ACQ节点之上0摆放位置通过另一个节点:37TVA:UJ:ACQ来设定1在安放好三维形体之后,还需设定具体的观察位置.9? 5P38VA:U,它也是建立.AP1 !W0 IA1 !X3:1 0 %)*安 徽 工 程 科 技 学 院 学 报,AC:73P AV -7EC S749:T8D AV 9BE7APAYD 37O RB97B9第!W卷第!期%)*年*月收稿日期:%)% & )2 & !作者简介:龚建成(!2#) &),男,江苏扬州人,讲师,在读硕士研究生1第!期 !龚建成,等:基于#$%$的&图形开发技术处理,对程序的运行产生相应的控制作用( )*+,-对象一共有三个:)*+,-.*/0/-、)*+,-1*2、)*+,-34506,70/-它们分别作用鼠标的左、中、右键,用于坐标的旋转、平移、放大缩小变换(鼠标如果没有中键,可用$84 9左键代替(处理交互问题时,利用监听器8:,/-6-5和;-/:7:/?常常不能满足编程需要,这是可以利用定义新的;-0=:*5对象的方法编写交互式#0=0&程序(编写自定义的;-0=:*5对象的三个步骤为:(!)定义一个继承;-0=:*5的新对象,同时给出新对象的构造方法(()定义一个初始化所用的:6:/:07:A-()方法((&)定义一个处理交互作用的B5*C-,D/:2+7+,()方法(E #0=0&的冲突检测F G H冲突检测与响应在物体的物理建模中是十分重要的内容(因为虚拟物体在运动过程中I可能发生相互碰撞、接触或其他形式的相互作用(出现这种情况I物体就不能按照原来的运动状态继续运动I否则虚拟环境中就会出现虚拟物体之间相互穿透、彼此重叠等不真实的现象(检测虚拟环境中虚拟物体是否发生了相互碰撞的过程称为冲突检测(检测到碰撞后I要对之做出正确的响应I修改虚拟物体的运动状态I确定物体的变形和损坏等I这就是冲突响应(冲突检测是虚拟现实、计算机动画、机器人学等领域的核心问题之一( #0=0&具有形体间冲突检查功能,为了编写具有这样功能的交互式应用程序,需要定义一个检查形体之间碰撞情况的行为对象,这时可用到#0=0&提供的用于形体间冲突检查用的三个对象:J0K-+BL6M*77,:*6N6/5?、J0K-+BL6M*77,:*6NO:/、J0K-+BL6M*77,:*6)*=-2-6/( #0=0&的冲突检查功能还处于不断改进的阶段,这方面的计算需要较多的时间,有时会影响程序的运行速度(&结束语随着计算机技术的发展和广泛应用,三维图形的应用范围也越来越广;另一方面,随着P6/-56-/的飞速发展,计算机网络成为数据信息流动最方便的渠道,JJJ则成为用户利用网络最便捷的方式(新的应用环境要求更适合于它的图形编程手段( #0=0语言和其& $QP的推出,刚好迎合了这一潮流,为广大程序员提供了开发&图形应用软件的新途径,因而一定会得到广泛推广与应用(参考文献:F ! H R05=-? )( 0:/-7I Q0+7 #( -:/-7E #0=0程序设计教程(上册)F ) H E北京:机械工业出版社,SSEF H #0=0 & 4+/*5:07 F ; T L8 H,/BU T T V0=0( ,+6( C*2 T B5*W+C/ T V0=0( 2-W:0 T

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论