java版WorldWind源代码解析之一文档格式.docx
- 文档编号:15970127
- 上传时间:2022-11-17
- 格式:DOCX
- 页数:16
- 大小:570.05KB
java版WorldWind源代码解析之一文档格式.docx
《java版WorldWind源代码解析之一文档格式.docx》由会员分享,可在线阅读,更多相关《java版WorldWind源代码解析之一文档格式.docx(16页珍藏版)》请在冰豆网上搜索。
∙图层
∙专用于地球的图层
WorldWindow和View接口
以下是WorldWindow接口:
∙set/getModel(Model)
∙set/getView(View)
∙getSceneController(...)
pick
以下监听器:
∙PositionListener
∙SelectListener
∙RenderingListener
∙repaint()
View接口:
∙Fields
∙Position,direction,fieldofview,altitude,heading,pitch,roll,
∙Actions
oapply()
ogoto(lat/lon/elev/altitude)
oproject(Point3Dpoint)
∙Compute
ohorizon()
opositionFromScreenPoint(...)
orayFromScreenPoint(...)
在Applet中使用WorldWind
要使用Applet,需要JavaAPIforOpenGL(JOGL)AppletLauncher。
新版本的JOGLAppletLauncher具备在applet中创建和部署基于OpenGL的3D图形的功能,而不需要客户端安装任何软件。
它可以在任何支持JOGL的操作系统和CPU上运行,只需要浏览器上安装以上版本。
以下是典型的在applet中部署WorldWind组件的代码:
<
applet
code="
"
width=400
height=260
codebase="
archive="
,"
>
param
name="
VALUE="
WorldWind
Applet
Demo"
progressbar"
value="
true"
cache_archive"
cache_archive_ex"
;
preload,;
preload,Applet1Up;
preload"
/applet>
其中文件中包含WorldWindApplet类,无需声明,而是作为参数引入;
而应当声明的是JOGLAppletLauncher,它的相关类和也需要列出。
架构和API
NASA拥有的海量数据可以以T来计算,这些数据来自卫星和太空望远镜。
NASAWorldWind的可视化技术可以用最便捷和低冗余的方式传送地理空间数据。
下图为ww架构图:
ww包含了交互式的3D图形组件,可用于Swing,AWT和SWT或其他UI组件。
WorldWindAPI主要以接口设计,因此用户可以选择性地替换已有组件。
最高级的接口为WorldWindow,相关的UI组件为Swing/AWT。
其他五个主要的接口为:
∙Globe接口表现地形
∙Layer接口表现影像信息
∙Model接口聚合Globe和Layer,用于创建星球模型
∙SceneController接口控制Model的渲染,可以用于表现事件、时间等
∙View接口控制用户视图
在典型的应用中,程序在一个Model对象中关联一个Globe对象和多个Layer对象。
然后将model传给SceneController对象,用于在一个WorldWindow中显示globe和layers。
SceneController对象控制globe和layers的显示,并与View接口互动来决定用户视图。
实现这些接口的对象可能由ww或其他开发者提供,而实现这些接口的对象可用于任何需要此类接口的地方。
ww已经提供了地球、火星和月球的模型的Globe实现,其他一些基本的Model,SceneController,View接口也都有了基本的实现。
FrameController接口将ww的渲染和整个程序的渲染集成,以便于控制。
所有的数据以缓存文件形式存取,文件缓存可以管理位于多个磁盘的文件碎片的取用、文件缓存可以同区难过WorldWind以单例模式访问。
下面开始我们将开始逐个研究Worldwind的类的作用,包含的属性和方法,继承的父类和实现的接口等等(以下是java版的源代码解析)
我们要研究WorldWind的源代码,首先我们要先找到WorldWind里不依赖于自身包的源代码,也就是说,我们要先找到它的源代码中,依赖于java语言的最近本的部分。
所以我们逐个包进行查看,发现当我们查看到包里的所有类,都不依赖于WorldWind的其他包(当然,我是通过最笨的方法,将包里的每个类都检查了一遍,发现了没有引入WorldWind自带的包,后面还有没有类似这样的包,暂时没看,不妨就先从这个开始研究吧),所以我们可以先研究一下他的这个包里的源代码。
这个包的结构如下:
我们下面不妨先打开一个类文件看看,到底里面写的是什么,这里我就拿第一个类文件开始吧。
我们打开发现如下代码(这里刚开始我们给出比较详细的介绍,后面我们就不再这么啰嗦了):
这里我们可以发现他继承了另外的一个类文件,那么我们只能将鼠标放在他继承的类上面,然后按住“Ctrl”不放,再鼠标点击这个类文件,我们进去看看,他又是什么一个情况。
结果如下:
这里我们发现他也是继承自别的类,不过这个类我们已经很熟悉了,这里我们不妨就在跟进去看一看,他具体是个什么情况,如下:
好了,到这里,我们已经跟的差不多了,因为RuntimeException已经不是WorldWind里的内容了,但是,如果你有兴趣,还可以继续往下跟。
这里我们就不跟了。
那么,我们就可以从WWRuntimeException开始研究源代码了。
后面我们将不再介绍这些即琐碎又简单的操作了。
好吧,这里我们言归正传,开始我们的java版的Worldwind研究之旅(这里我们猜测,Exception是WorldWind源代码中不依赖于自带包的其中一部分,可定还会有别的包,也不依赖于他的自带包,我们就慢慢研究着看吧。
作为第一个吃螃蟹的人,没有人会告诉你一个新东西该怎么学习,这里我们只能凭感觉试探。
好吧,这里就此打住,要不我真的就成老太婆了)
这里我看完了这个包里的六个类文件,发现他都是Super()函数,好吧,没必要仔细研究这个包了,我们接着向下寻找我们要查找的包。
方法不再赘述。
我们开始对源代码进行摸索,搜索吧,在你还没有清楚他的结构之前,并且没有资料可以引导你来学习,我们只能通过慢慢的摸索来学习,这样很浪费时间,但是没办法,研究东西就是这样。
找了好长时间,才发现另一个不依赖于Worldwind自带包的包(其实还不完全是,至少没有nasa相关的字眼了),他的名字就是好吧,下面我们来看看他有是什么一个情况。
上面就是他所包含的类文件,打开上面的包中的某些类文件,还是会发现类似下面的引包字眼:
不过,我猜测应该不会太深了,直觉这样告诉我,这里还有一个比直觉更合适的理由,那就是,搜索到这里,其实我已经基本上快搜索完了整个Worldwind源代码了。
叹气,嗨,没办法。
这就是研究。
(后面证明,这些无谓的过程并不是一文不值,因为他可以让你大致了解了整个源代码的继承情况,为后面扩展开来研究源代码提供了“经历基础”。
)
继续查找发现了这个包,完全不依赖与任何Worldwind包,欧耶,我们成功了。
来看一下他所包含的内容吧。
这个包里一共三个类,那就分析一下吧。
下面我们先来分析这个类文件吧
首先我们看到这个类文件里的如下信息:
这里我们看见Baseclass字样,好了,终于发现了他的真正的源头。
如果是比较正式的源代码,应该都会标识这样的信息的,所以,我们这里可以先小小的兴奋一下,好,我们开始使用快速搜索法吧,可以不用如此辛苦的逐个摸索了。
于是我们就“Ctrl+Shift+H”输入“Baseclass”来查找我们想要的基础类,即为没有引入任何Worldwind包的类,事实证明,我们的猜测是正确的,搜索的结果如下:
结果不是太多,嗯,我们这里找到了WorldWind源代码里最原始的部分。
那么我们可以迈出研究WorldWind源代码的第一步了。
下面我们将我们的思路跳转回来,继续研究我们的类文件。
先打开该文件,我们看一下该文件所包含的内容吧。
好了,上面就是类文件所包含的内容,我们从结构上粗略的看一下,应该很简单吧,但是作为研究WorldWind源代码,我们还是有必要打开该类文件进行仔细学习和研究的,这里我就忽略这一步了。
说实话,我是数学专业出身的,再加上又是刚毕业不到一年,所学的java知识还很有限,这里我就不班门弄斧了。
接下来我们看一下这个包里面的第二个类文件吧。
文件,首先,我们看一下这个类文件的文件内容吧:
这个文件很简洁的,我们就读一读它英文的介绍吧,这里我的英语刚过四级,不过还是可以看懂这些单词说的是什么意思的,为了更快的翻译这些语句的意思,我选着了在线翻译,翻译好自己在修改一下就行了。
出此下策,全是由于英文不好的缘故,我要是英语过了专八,才不会去装什么有道词典的。
好,继续往下看。
先看一下翻译的结果吧:
翻译的不是十分正确,不过基本上可以使人明白是怎么一回事。
好,我们接着看这个包里面的最后一个类文件。
文件,它所包含的内容如下:
我们大致看一下,基本上也明白是什么情况。
我们就进去看一下大致的内容吧。
如下图:
当然,上面的截图不完整,不过我们已经可以看出一些门道了。
还是一堆介绍,我们用同样的方法,XX这些英文的意思。
这里不重复了。
翻译我还是看的是懂非懂,不过我可以看懂它包含的内容是什么一个情况就行了。
接下来我们就把下面的几个包里的内容先看看吧:
这里的包引用的不算复杂,我们可以耐心的跟一下,最多也跳不到哪里去,到这里,我们就有很多工作要做了,因为要想研究Worldwind源代码,就必须搞清楚每个类文件,每个方法的作用,才可以进行更好的进行二次开发。
也许,你可能会反对我的说法,认为搞那么细致没什么用,随便搞搞,就能做二次开发。
如果你真的这样认为,我也没有办法,你就当我是在这里自言自语好了。
言归正传,上面的几个包,是要搞透彻的,因为我们都是刚开始,这些简单的搞不明白,后面的引用和抽象出来的接口就更麻烦了,所以一定要看的透彻才行。
下面我们开始研究这几个包。
我们不妨从中选择一个包,不妨就选这个包来研究吧。
先看一下里面包含了哪些类文件吧:
那我们就逐个的看看这些类文件吧。
先看第一个类文件,文件结构如下:
从名字上看一下上面的类文件所包含的内容可以发现应该比较简单,我们就就能到类里面仔
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java WorldWind 源代码 解析 之一