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的更多相关文章

  1. WorldWind源码剖析系列:角度类Angle

    PluginSDK中的角度结构体Angle类图如下所示. 角度结构体主要定义了一个弧度表示角度值的字段:double Radians.还有几个表示角度最大值.最小值.非数值和零角度等字段.定义了一个D ...

  2. WorldWind源码剖析系列:挂件类Widgets

    WorldWindow用户定制控件类中所包含的的挂件类Widgets控件主要有如下图所示的派生类.它们的类图如下所示. 鉴于挂件类Widgets及其派生类,相对简单,基本上都是些利用DirectX3D ...

  3. WorldWind源码剖析系列:设置类SettingsBase

    PluginSDK中的星球设置类WorldSettings 和WorldWind.程序设置类WorldWindSettings均继承自父类SettingsBase.类图如下所示.其中父类Setting ...

  4. WorldWind源码剖析系列:BMNG类构造函数深入分析

    BMNG构造函数深入分析 一.主要类图 二.主要功能: 1)        BMNG类 BMNG类将包含以“Blue Marble”为主题的所有可渲染影像的根节点添加到当前星球的可渲染对象列表中,包括 ...

  5. WorldWind源码剖析系列:插件类Plugin、插件信息类PluginInfo和插件编译器类PluginCompiler

    插件类Plugin是所有由插件编译器加载的插件子类的抽象父类,提供对插件的轻量级的访问控制功能. 插件信息类PluginInfo用来存储关于某个插件的信息的类,可以理解为对插件类Plugin类的进一步 ...

  6. WorldWind源码剖析系列:日志类Log

    Utility工程中的日志类Log主要用来输出Debug状态下的调试信息.该类的类图如下: 日志类Log中使用到的类和内嵌结构体类型主要有以下这些: public class LogEventArgs ...

  7. WorldWind源码剖析系列:相机类CameraBase

    相机基类CameraBase PluginSDK中的相机类CameraBase是三维计算机图形学中的概念.观察者在三维场景中漫游时,通过眼睛看到的场景和相机拍摄过程非常一致.实际上,Direct3D和 ...

  8. WorldWind源码剖析系列:缓冲类Cache

    缓冲类Cache主要用于在最小的限制条件下保存从远程服务器通过网络下载下来的地理空间数据,以便当用户处于离线状态时能够使用这些已经缓冲好的数据.Google Earth也采用类似机制处理用户离线浏览漫 ...

  9. WorldWind源码剖析系列:四元数类Quaternion

    PluginSDK中的Quaternion4d类可能是感觉Microsoft.DirectX. Quaternion类不太实用或不够用,自己有重新写的. 四元数是英国数学家哈密顿(W.R.Hamilt ...

  10. WorldWind源码剖析系列:星球类World

    星球类World代表通用的星球类,因为可能需要绘制除地球之外的其它星球,如月球.火星等.该类的类图如下. 需要说明的是,在WorldWind中星球球体的渲染和经纬网格的渲染时分别绘制的.经纬网格的渲染 ...

随机推荐

  1. 2017 年 PHP 程序员未来路在何方

    PHP 从诞生到现在已经有20多年历史,从Web时代兴起到移动互联网退潮,互联网领域各种编程语言和技术层出不穷, Node.js . GO . Python 不断地在挑战 PHP 的地位.这些技术的推 ...

  2. Spring全家桶系列–[SpringBoot入门到跑路]

    //本文作者:cuifuan Spring全家桶————[SpringBoot入门到跑路] 对于之前的Spring框架的使用,各种配置文件XML.properties一旦出错之后错误难寻,这也是为什么 ...

  3. IntelliJ idea 备份与恢复

    为了防止突然断电或者电脑突然关机导致idea恢复出厂设置,需要定期备份配置. 一.备份 File---Export Settings 将settings.jar 文件导入到C:\Users\xutin ...

  4. 高德地图 JS API - 根据经纬度获取周边建筑地标

    像我们经常用的微信或微博,发表动态时都有选择位置的功能,根据当前的定位获取附近的地标.利用高德地图我们就可以实现这样的功能. 1. 具体代码: // 高德地图查询周边 function aMapSea ...

  5. Finereport和Finebi的区别

    1.问题描述 大家现在可能都知道,目前帆软旗下特色产品主要是FineReport和FineBI,但是部分用户可能会有个疑问:FineReport和FineBI到底有什么区别? 2.产品介绍FineRe ...

  6. Linux 性能监控之CPU&内存&I/O监控Shell脚本2

    Linux 性能监控之CPU&内存&I/O监控Shell脚本2   by:授客 QQ:1033553122 思路: 捕获数据->停止捕获数据->提取数据 备注:一些命令的输 ...

  7. hadoop中实现java网络爬虫

    这一篇网络爬虫的实现就要联系上大数据了.在前两篇java实现网络爬虫和heritrix实现网络爬虫的基础上,这一次是要完整的做一次数据的收集.数据上传.数据分析.数据结果读取.数据可视化. 需要用到 ...

  8. UWP开发细节记录:DirectX::XMMATRIX 的坑

    这两天写的代码概率性的崩溃在 XMMatrixMultiply() 函数,XMMatrixMultiply() 本身是 inline 函数可以看到崩溃处的代码: vX = _mm_mul_ps(vX, ...

  9. Visual Studio Code配置Python环境

    安装环境python环境变量,这个就不写了,这类文章一抓一大把,这类就省略了······· 在Visal Studil Code中配置python环境,其实跟我的上一篇文章一样,如图: 这里有两个选择 ...

  10. Prometheus Node_exporter 之 System Detail

    System Detail 1. Context Switches / Interrupts type: GraphUnit: shortLabel: CounterContext switches ...