随笔分类 - WorldWind源码剖析
摘要:配置载入器类ConfigurationLoader主要从指定的路径中加载保存星球相关参数的xml文件,从中读取数据来构造星球对象及其所关联的可渲染子对象列表并返回。该类的类图如下所示。该类所包含的主要的方法基本都是静态的,功能说明如下:public static double ParseDouble...
阅读全文
摘要:大气层散射球类AtmosphericScatteringSphere代表地球外面的大气层散射球模型,可以控制开启/关闭渲染该对象。该类的类图如下。该类所包含的主要字段、属性和方法如下:public float m_radius;//大气层散射球半径,默认为地球赤道半径的1.025倍protected...
阅读全文
摘要:可渲染对象列表类RenderableObjectList用来存储与一个星球体相关联的全部的可渲染对象,继承自可渲染对象类RenderableObject。RenderableObjectList的类图如下所示。该类所包含的主要的字段、属性和方法如下: protected ArrayList m_ch...
阅读全文
摘要:星球类World代表通用的星球类,因为可能需要绘制除地球之外的其它星球,如月球、火星等。该类的类图如下。需要说明的是,在WorldWind中星球球体的渲染和经纬网格的渲染时分别绘制的。经纬网格的渲染过程请参见文章《WorldWind源码剖析系列:星球经纬度格网的绘制》,是通过Form.OnPaint...
阅读全文
摘要:Utility工程中的日志类Log主要用来输出Debug状态下的调试信息。该类的类图如下:日志类Log中使用到的类和内嵌结构体类型主要有以下这些:public class LogEventArgs : EventArgs//日志事件参数{ public int level; public strin...
阅读全文
摘要:WorldWind源码剖析系列:星球球体的加载与渲染 WorldWind中主函数Main()的分析 在文件WorldWind.cs中主函数Main()阐明了WorldWind的初始化运行机制(如图1所示 ): 图1 WorldWind的初始化运行机制 1. 使用System.Version在内部,读
阅读全文
摘要:影像存储类ImageStore 影像存储类ImageStore提供了计算本地影像路径和远程影像影像URL访问的各种接口,是WmsImageStore类和NltImageStore类的基类。当划分完层次的网格,填充完网格的坐标信息后,将先调用LoadFile()函数,若返回NULL,则先下载后渲染,如
阅读全文
摘要:代理助手类ProxyHelper通过平台调用的互操作技术封送了若干Win32结构体和函数。该类类图如下。提供的主要处理方法基本上都是静态函数,简要描述如下:内嵌类型WINHTTP_AUTOPROXY_OPTIONS代表自动代理选项的Win32结构体。内嵌类型WINHTTP_PROXY_INFO代表被...
阅读全文
摘要:地形访问器类TerrainAccessor 地形访问器类TerrainAccessor提供了对地形(高程)Terrain (elevation)访问的各种接口interface,是NltTerrainAccessor类的基类。类TerrainAccessor和NltTerrainAccessor封装
阅读全文
摘要:下载请求类DownloadRequest是各种下载请求的抽象基类,先派生出网络下载请求类WebDownloadRequest,再派生出地理空间下载请求类GeoSpatialDownloadRequest(抽象类),再派生出地形下载请求类TerrainDownloadRequest。 当需要渲染区域的
阅读全文
摘要:网络下载类WebDownload封装了对请求的瓦片进行网络下载的相关操作。该类使用了两个委托类型和一个枚举类型。 该类的类图如下。网络下载类WebDownload各个字段和属性的含义说明如下:static public bool Log404Errors = false;//网络下载错误类型stat...
阅读全文
摘要:地形瓦片类TerrainTile 用来抽象封装用户漫游中所请求的地形瓦片数据类型。 地形瓦片服务类TerrainTileService提供了从BIL(Binary Interleaved by Line,按行交叉存储二进制文件)地形文件获取高程的功能。该类主要是用来返回用户漫游中所请求的地形瓦片对象
阅读全文
摘要:下载队列类DownloadQueue代表具有优先级的下载队列,该类的存储下载请求的数组链表专门按一定的优先级来存储下载请求的。该类的类图如下。下载队列类DownloadQueue各个字段的含义说明如下:public static int MaxQueueLength = 200;//最大队列长度pu...
阅读全文
摘要:图像助手类ImageHelper封装了对各种图像的操作。该类类图如下。提供的主要处理方法基本上都是静态函数,简要描述如下:public static bool IsGdiSupportedImageFormat(string imageFileName) 静态函数用给定的图像文件名称来判断该图像是否...
阅读全文
摘要:缓冲类Cache主要用于在最小的限制条件下保存从远程服务器通过网络下载下来的地理空间数据,以便当用户处于离线状态时能够使用这些已经缓冲好的数据。Google Earth也采用类似机制处理用户离线浏览漫游问题。该类类图如下。提供的主要参数设置有:缓冲区上限CacheUpperLimit(默认最大为2G...
阅读全文
摘要:绘制参数类DrawArgs主要对绘制时需要的对象如:设备对象Microsoft.DirectX.Direct3D.Device、Microsoft.DirectX.Direct3D.Font字体对象、相机对象CameraBase、星球对象World、下载队列对象DownloadQueue、程序插件集...
阅读全文
摘要:PluginSDK中的星球设置类WorldSettings 和WorldWind。程序设置类WorldWindSettings均继承自父类SettingsBase。类图如下所示。其中父类SettingsBase内嵌了枚举型LocationType,子类WorldSettings的定义文件中附带了定义...
阅读全文
摘要:经纬度格网类LatLongGrid继承自可渲染对象类RenderableObject,是WorldWind中用来在星球外表绘制经纬度格网的封装类。其类图如下所示。绘制经纬网格的主体函数为Render(),其内部主要调用以下函数完成绘制:ComputeGridValues()//计算格网值Render...
阅读全文
摘要:相机基类CameraBase PluginSDK中的相机类CameraBase是三维计算机图形学中的概念。观察者在三维场景中漫游时,通过眼睛看到的场景和相机拍摄过程非常一致。实际上,Direct3D和OpenGL都是先通过对现实世界中的场景先进行世界变换,再通过设置观察矩阵以在场景中安置一个虚拟相...
阅读全文
摘要:PluginSDK中的Quaternion4d类可能是感觉Microsoft.DirectX. Quaternion类不太实用或不够用,自己有重新写的。四元数是英国数学家哈密顿(W.R.Hamilton)在1843年发现的,由于矩阵论的不断丰富和不断完善,人们更乐意采用矩阵来解决实际工程中的问题,这...
阅读全文