gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 15:50:55 24 4
gpt4 key购买 nike

我有一条包含纬度/经度和海拔的飞行路径,我需要将其转换为 cesium.js 的笛卡尔坐标系 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,但似乎找不到相同的 SO 问题以供引用。

我正在部分检查我的代码是否正确,方法是手动将给定位置的地球半径 + 飞行路径的高度相加,看看这是否等于我的 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com