ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:570.05KB ,
资源ID:3059178      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3059178.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(java版WorldWind源代码解析之一.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

java版WorldWind源代码解析之一.docx

1、java版WorldWind源代码解析之一Java版WorldWind源代码学习笔记该文档编写者系数学系毕业且未满一年工作经验的职场新人,java知识有限,对于新事物Worldwind刚接触不久,总结一下。不足之处,希望得到各位大师的指点。刚开始,我看了一些WorldWind的相关简介,感觉从整体上给了WorldWind非常好的框架感,所以我将它拷贝了过来。之后,我们的研究就从大的框架转到细节去。毕竟,“研究”不只是看大的框架,还要将细节进行分析。我作为一个新手,对此也非常陌生,那么,就让我们一起来学习吧。不足之处请见谅。首先,我们贴出官网上给出的WorldWind的源代码结构如下 顶级包 用

2、于awt的组件 GPS轨道格式 GPS轨道格式 几何与数学类 地球、火星等星球的实现 图层 专用于地球的图层WorldWindow和View接口以下是WorldWindow接口: set/getModel(Model) set/getView(View) getSceneController(.)pick以下监听器: PositionListener SelectListener RenderingListener repaint()View 接口: Fields Position, direction, field of view, altitude, heading, pitch, rol

3、l, Actionso apply()o goto(lat/lon/elev/altitude)o project(Point 3Dpoint) Computeo horizon()o positionFromScreenPoint(.)o rayFromScreenPoint(.)在Applet中使用WorldWind要使用Applet,需要Java API for OpenGL(JOGL) Applet Launcher。新版本的JOGL Applet Launcher具备在applet中创建和部署基于OpenGL的3D图形的功能,而不需要客户端安装任何软件。它可以在任何支持JOGL的操作

4、系统和CPU上运行,只需要浏览器上安装以上版本。以下是典型的在applet中部署WorldWind组件的代码:其中文件中包含WorldWindApplet类,无需声明,而是作为参数引入;而应当声明的是JOGL Applet Launcher,它的相关类和也需要列出。架构和APINASA拥有的海量数据可以以T来计算,这些数据来自卫星和太空望远镜。NASA World Wind的可视化技术可以用最便捷和低冗余的方式传送地理空间数据。下图为ww架构图:ww包含了交互式的3D图形组件,可用于Swing,AWT和SWT或其他UI组件。World Wind API主要以接口设计,因此用户可以选择性地替换已

5、有组件。最高级的接口为WorldWindow,相关的UI组件为Swing/AWT。其他五个主要的接口为: Globe接口 表现地形 Layer接口 表现影像信息 Model接口 聚合Globe和Layer,用于创建星球模型 SceneController接口 控制Model的渲染,可以用于表现事件、时间等 View接口 控制用户视图在典型的应用中,程序在一个Model对象中关联一个Globe对象和多个Layer对象。然后将model传给SceneController对象,用于在一个WorldWindow中显示globe和layers。SceneController对象控制globe和layer

6、s的显示,并与View接口互动来决定用户视图。实现这些接口的对象可能由ww或其他开发者提供,而实现这些接口的对象可用于任何需要此类接口的地方。ww已经提供了地球、火星和月球的模型的Globe实现,其他一些基本的Model,SceneController,View接口也都有了基本的实现。FrameController接口将ww的渲染和整个程序的渲染集成,以便于控制。所有的数据以缓存文件形式存取,文件缓存可以管理位于多个磁盘的文件碎片的取用、文件缓存可以同区难过WorldWind以单例模式访问。下面开始我们将开始逐个研究Worldwind的类的作用,包含的属性和方法,继承的父类和实现的接口等等(以

7、下是java版的源代码解析)我们要研究WorldWind的源代码,首先我们要先找到WorldWind里不依赖于自身包的源代码,也就是说,我们要先找到它的源代码中,依赖于java语言的最近本的部分。所以我们逐个包进行查看,发现当我们查看到包里的所有类,都不依赖于WorldWind的其他包(当然,我是通过最笨的方法,将包里的每个类都检查了一遍,发现了没有引入WorldWind自带的包,后面还有没有类似这样的包,暂时没看,不妨就先从这个开始研究吧),所以我们可以先研究一下他的这个包里的源代码。这个包的结构如下:我们下面不妨先打开一个类文件看看,到底里面写的是什么,这里我就拿第一个类文件开始吧。我们打

8、开发现如下代码(这里刚开始我们给出比较详细的介绍,后面我们就不再这么啰嗦了):这里我们可以发现他继承了另外的一个类文件,那么我们只能将鼠标放在他继承的类上面,然后按住“Ctrl”不放,再鼠标点击这个类文件,我们进去看看,他又是什么一个情况。结果如下:这里我们发现他也是继承自别的类,不过这个类我们已经很熟悉了,这里我们不妨就在跟进去看一看,他具体是个什么情况,如下:好了,到这里,我们已经跟的差不多了,因为RuntimeException已经不是WorldWind里的内容了,但是,如果你有兴趣,还可以继续往下跟。这里我们就不跟了。那么,我们就可以从WWRuntimeException开始研究源代码

9、了。后面我们将不再介绍这些即琐碎又简单的操作了。好吧,这里我们言归正传,开始我们的java版的Worldwind研究之旅(这里我们猜测,Exception是WorldWind源代码中不依赖于自带包的其中一部分,可定还会有别的包,也不依赖于他的自带包,我们就慢慢研究着看吧。作为第一个吃螃蟹的人,没有人会告诉你一个新东西该怎么学习,这里我们只能凭感觉试探。好吧,这里就此打住,要不我真的就成老太婆了)这里我看完了这个包里的六个类文件,发现他都是Super()函数,好吧,没必要仔细研究这个包了,我们接着向下寻找我们要查找的包。方法不再赘述。我们开始对源代码进行摸索,搜索吧,在你还没有清楚他的结构之前,

10、并且没有资料可以引导你来学习,我们只能通过慢慢的摸索来学习,这样很浪费时间,但是没办法,研究东西就是这样。找了好长时间,才发现另一个不依赖于Worldwind自带包的包(其实还不完全是,至少没有nasa相关的字眼了),他的名字就是好吧,下面我们来看看他有是什么一个情况。上面就是他所包含的类文件,打开上面的包中的某些类文件,还是会发现类似下面的引包字眼:不过,我猜测应该不会太深了,直觉这样告诉我,这里还有一个比直觉更合适的理由,那就是,搜索到这里,其实我已经基本上快搜索完了整个Worldwind源代码了。叹气,嗨,没办法。这就是研究。(后面证明,这些无谓的过程并不是一文不值,因为他可以让你大致了

11、解了整个源代码的继承情况,为后面扩展开来研究源代码提供了“经历基础”。)继续查找发现了这个包,完全不依赖与任何Worldwind包,欧耶,我们成功了。来看一下他所包含的内容吧。这个包里一共三个类,那就分析一下吧。下面我们先来分析这个类文件吧首先我们看到这个类文件里的如下信息:这里我们看见Base class字样,好了,终于发现了他的真正的源头。如果是比较正式的源代码,应该都会标识这样的信息的,所以,我们这里可以先小小的兴奋一下,好,我们开始使用快速搜索法吧,可以不用如此辛苦的逐个摸索了。于是我们就“Ctrl+Shift+H”输入“Base class”来查找我们想要的基础类,即为没有引入任何W

12、orldwind包的类,事实证明,我们的猜测是正确的,搜索的结果如下:结果不是太多,嗯,我们这里找到了WorldWind源代码里最原始的部分。那么我们可以迈出研究WorldWind源代码的第一步了。下面我们将我们的思路跳转回来,继续研究我们的类文件。先打开该文件,我们看一下该文件所包含的内容吧。好了,上面就是类文件所包含的内容,我们从结构上粗略的看一下,应该很简单吧,但是作为研究WorldWind源代码,我们还是有必要打开该类文件进行仔细学习和研究的,这里我就忽略这一步了。说实话,我是数学专业出身的,再加上又是刚毕业不到一年,所学的java知识还很有限,这里我就不班门弄斧了。接下来我们看一下这

13、个包里面的第二个类文件吧。文件,首先,我们看一下这个类文件的文件内容吧:这个文件很简洁的,我们就读一读它英文的介绍吧,这里我的英语刚过四级,不过还是可以看懂这些单词说的是什么意思的,为了更快的翻译这些语句的意思,我选着了在线翻译,翻译好自己在修改一下就行了。出此下策,全是由于英文不好的缘故,我要是英语过了专八,才不会去装什么有道词典的。好,继续往下看。先看一下翻译的结果吧:翻译的不是十分正确,不过基本上可以使人明白是怎么一回事。好,我们接着看这个包里面的最后一个类文件。文件,它所包含的内容如下:我们大致看一下,基本上也明白是什么情况。我们就进去看一下大致的内容吧。如下图:当然,上面的截图不完整

14、,不过我们已经可以看出一些门道了。还是一堆介绍,我们用同样的方法,XX这些英文的意思。这里不重复了。翻译我还是看的是懂非懂,不过我可以看懂它包含的内容是什么一个情况就行了。接下来我们就把下面的几个包里的内容先看看吧:这里的包引用的不算复杂,我们可以耐心的跟一下,最多也跳不到哪里去,到这里,我们就有很多工作要做了,因为要想研究Worldwind源代码,就必须搞清楚每个类文件,每个方法的作用,才可以进行更好的进行二次开发。也许,你可能会反对我的说法,认为搞那么细致没什么用,随便搞搞,就能做二次开发。如果你真的这样认为,我也没有办法,你就当我是在这里自言自语好了。言归正传,上面的几个包,是要搞透彻的,因为我们都是刚开始,这些简单的搞不明白,后面的引用和抽象出来的接口就更麻烦了,所以一定要看的透彻才行。下面我们开始研究这几个包。我们不妨从中选择一个包,不妨就选这个包来研究吧。先看一下里面包含了哪些类文件吧:那我们就逐个的看看这些类文件吧。先看第一个类文件,文件结构如下:从名字上看一下上面的类文件所包含的内容可以发现应该比较简单,我们就就能到类里面仔

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1