WorldWind源码剖析系列:数学引擎类MathEngine
PluginSDK中的MathEngine类是密封类。不可继承,主要完成通用的数学计算功能。由于按平面展开层层划分,所以在WW里用到一个row,col的概念,类MathEngine封装了从行/列到经/纬度值的转换,这也是WW进行纹理贴图的依据。划分后的每个方格对应一块512X512的,对应Level的纹理,有了这些信息,再加上高度值就可以实时渲染三维图像。其类图如下。

其中,该类没有字段和属性成员,只有方法成员,都是静态成员。
Azimuth方法用于计算从A点(latA,lonA)到B点(latB,lonB)的方位角。
SphericalToCartesian方法用于将位置点的球面坐标转换为空间笛卡尔坐标。输入角度以度为单位。其重载形式输入角度为Angle对象,以弧度为单位。返回Microsoft.DirectX. Vector3三维向量对象,以弧度为单位。
SphericalToCartesianD方法用于将位置点的球面坐标转换为空间笛卡尔坐标。输入角度为Angle对象,以弧度为单位。返回WorldWind. Point3d三维点对象。
CartesianToSpherical方法用于将位置点的空间笛卡尔坐标转换为球面坐标。返回Microsoft.DirectX. Vector3三维向量对象,以弧度为单位。
CartesianToSphericalD方法用于将位置点的空间笛卡尔坐标转换为球面坐标。返回WorldWind. Point3d三维点对象。
DegreesToRadians和RadiansToDegrees方法用于实现角度和弧度之间的转换。
DistancePlaneToPoint方法用于计算点到平面的距离。
Hypot方法用于计算
EulerToQuaternion方法用于将由航偏角、俯仰角和横滚角组成的欧拉集合转换为一个Microsoft.DirectX. Quaternion四元数结构体对象输出。
QuaternionToEuler方法功能则相反。返回Microsoft.DirectX. Vector3三维向量对象,以弧度为单位。
SphericalDistance方法用于计算球面两点之间的球面角度距离。输入参数为Angle对象,返回Angle对象,以弧度为单位。
SphericalDistanceDegrees方法也用于计算球面两点之间的球面角度距离。输入参数为double类型,返回double类型,以度为单位。
GetColFromLongitude方法用于将给定的经度值按照给定的瓦片划分大小计算其所在的格网列号。其有两种重载形式,输入参数分别以度/弧度为单位。
GetRowFromLatitude方法用于将给定的维度值按照给定的瓦片划分大小计算其所在的格网行号。其有两种重载形式,输入参数分别以度/弧度为单位。
WorldWind构建的地球模型经度范围为[-180,180],经度范围为[-90,90]。瓦片格网行格网行列号索引从1开始,而不是从0开始。
WorldWind源码剖析系列:数学引擎类MathEngine的更多相关文章
- WorldWind源码剖析系列:角度类Angle
PluginSDK中的角度结构体Angle类图如下所示. 角度结构体主要定义了一个弧度表示角度值的字段:double Radians.还有几个表示角度最大值.最小值.非数值和零角度等字段.定义了一个D ...
- WorldWind源码剖析系列:挂件类Widgets
WorldWindow用户定制控件类中所包含的的挂件类Widgets控件主要有如下图所示的派生类.它们的类图如下所示. 鉴于挂件类Widgets及其派生类,相对简单,基本上都是些利用DirectX3D ...
- WorldWind源码剖析系列:设置类SettingsBase
PluginSDK中的星球设置类WorldSettings 和WorldWind.程序设置类WorldWindSettings均继承自父类SettingsBase.类图如下所示.其中父类Setting ...
- WorldWind源码剖析系列:BMNG类构造函数深入分析
BMNG构造函数深入分析 一.主要类图 二.主要功能: 1) BMNG类 BMNG类将包含以“Blue Marble”为主题的所有可渲染影像的根节点添加到当前星球的可渲染对象列表中,包括 ...
- WorldWind源码剖析系列:插件类Plugin、插件信息类PluginInfo和插件编译器类PluginCompiler
插件类Plugin是所有由插件编译器加载的插件子类的抽象父类,提供对插件的轻量级的访问控制功能. 插件信息类PluginInfo用来存储关于某个插件的信息的类,可以理解为对插件类Plugin类的进一步 ...
- WorldWind源码剖析系列:日志类Log
Utility工程中的日志类Log主要用来输出Debug状态下的调试信息.该类的类图如下: 日志类Log中使用到的类和内嵌结构体类型主要有以下这些: public class LogEventArgs ...
- WorldWind源码剖析系列:相机类CameraBase
相机基类CameraBase PluginSDK中的相机类CameraBase是三维计算机图形学中的概念.观察者在三维场景中漫游时,通过眼睛看到的场景和相机拍摄过程非常一致.实际上,Direct3D和 ...
- WorldWind源码剖析系列:缓冲类Cache
缓冲类Cache主要用于在最小的限制条件下保存从远程服务器通过网络下载下来的地理空间数据,以便当用户处于离线状态时能够使用这些已经缓冲好的数据.Google Earth也采用类似机制处理用户离线浏览漫 ...
- WorldWind源码剖析系列:四元数类Quaternion
PluginSDK中的Quaternion4d类可能是感觉Microsoft.DirectX. Quaternion类不太实用或不够用,自己有重新写的. 四元数是英国数学家哈密顿(W.R.Hamilt ...
- WorldWind源码剖析系列:星球类World
星球类World代表通用的星球类,因为可能需要绘制除地球之外的其它星球,如月球.火星等.该类的类图如下. 需要说明的是,在WorldWind中星球球体的渲染和经纬网格的渲染时分别绘制的.经纬网格的渲染 ...
随机推荐
- nginx多站点配置
一.安装nginx https://yq.aliyun.com/articles/101144?spm=5176.10695662.1996646101.searchclickresult.70af9 ...
- 理解Java之IO流
流是一种抽象概念,它代表了数据的无结构化传递.用来进行输入输出操作的流就称为IO流. 一.IO流结构 1.流的分类方式 按流向分: 从文件/网络/内存等(数据源)到程序是输入流:从程序到文件/网络/内 ...
- nginx配置https转发到tomcat(使用自签名的证书)
一.使用openSSL生成自签名的证书 1.生成RSA私钥 命令:openssl genrsa -des3 -out server.key 1024 说明:生成rsa私钥,des3算法,1024强度, ...
- DRF序列化
1. 安装 pip install djangoframework 2. app注册 rest_framework INSTALLED_APPS = [ 'django.contrib.admin', ...
- 【 js 基础 】【读书笔记】关于this
this 关键字是 Javascript 中很特别的一个关键字,被自动定义在所有函数的作用域中.this提供了一种更优雅的方式隐式“传递”一个对象的引用.今天就来说说 this 的指向问题. this ...
- java中return、break、continue的区别
1.return @Testpublic void testReturn(){ for (int j = 1; j < 3; j++) { for (int i = 1; i < 5; i ...
- HTML:target=_blank、target=_top、target=_parent、target=_self 的区别
HTML:target=_blank.target=_top.target=_parent.target=_self 的区别 _blank 在新窗口中打开链接_parent 在父窗体中打开链接_sel ...
- HTML中的元素分类
HTML中有很多的标签(元素),可以按照这些元素在网页中所占的空间情况进行分类.具体可以这样简单的分类: 1.块级元素:指的是在网页中该元素独自占据网页的一行显示区域,即当使用了该元素后,该元素会使下 ...
- 前端开发笔记(1)html基础
HTML介绍 HTML是HyperTextMarkupLanguage超文本标记语言的缩写 HTML是标记语意的语言 编辑器 任何纯文本编辑器都能够编辑html,比如记事本,editplus,note ...
- vs中nuget命令的用法
一.安装 1.安装指定版本类库install-package <程序包名> -version <版本号> ( 注意:-version <版本号> 可以 ...