javascript - 极坐标到笛卡尔坐标函数未输出正确的数据

标签 javascript node.js coordinates cesiumjs cartesian

我有一 strip 有纬度/经度和海拔的飞行路径,我需要将其转换为 cesium.js 的 Cartesin X,Y,Z。 我在尝试转换它时遇到了困难,因为我似乎没有从我的函数中得到正确的结果。

var R = 6371;
function polarToCartesian(latitude, longitude, elevation){
    x = (R+elevation) * math.cos(latitude) * math.cos(longitude);
    y = (R+elevation) * math.cos(latitude) * math.sin(longitude);
    z = (R+elevation) * math.sin(latitude);

    var ar = [x,y,z];
    return  ar;
}

我要么没有正确的极坐标到笛卡尔公式,要么没有正确的地球半径。我在某个地方发现我的半径应该是 6371 但似乎找不到相同的问题供引用。

我通过手动添加给定位置的地球半径+飞行路径的高度来部分检查我的代码是否正确,并查看这是否等于我的 x,y,z 向量的长度。

例如:x,y,z (3689.2472215653725,3183.2401988117012,13306.90338789763) 当我给我的函数这个时输出

-93.028,44.6942,7800

纬度、经度、海拔

有人能指点我找到正确的js代码来完成这个转换吗?

最佳答案

为此,您应该使用 Cesium 的内置函数。请参阅Cartesian3.fromDegreesCartesian3.fromDegreesArray .

例如:

var result = Cesium.Cartesian3.fromDegrees(latitude, longitude, elevation);

请注意,结果将如 Cesium 预期的那样:以米为单位,而不是公里。这还考虑了椭圆体的形状,默认值为 WGS84 (正如您的函数所假设的那样,地球并不是一个完美的球体)。

关于javascript - 极坐标到笛卡尔坐标函数未输出正确的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39353960/

相关文章:

node.js - 如何在 Electron 应用程序中路径到图像文件?

javascript - 关于webpack中的nodejs路径,webpack如何在typescript中找到模块?

C# Foreach XML 节点

JavaScript atan2() 函数没有给出预期的结果

Python坐标函数

javascript - 如何在点击时为另一个选择器切换悬停事件?

javascript 方法无法在 IE 中编译,但在运行调试时工作正常

javascript - 图像未使用 Jade 渲染

javascript - 在 HTML 页面上绘制矢量图形的最佳方法有哪些?

node.js - npm 审核 EINVALIDTAGNAME