Pre*_*lan 5 javascript math cesium
使用three.js库我已经组装了一个设计(植物)。该设计包含许多较小的模型,这些模型具有从原点 (0,0,0) 在 (x, y, z) 中的位置参考。在以下链接中附上了示例屏幕截图

现在我想将具有自己位置的单个模型加载到 Cesium 中。当我尝试加载直接将位置 (x, y, z) 转换为 (north, Eastern, up) 时,结果并不如预期。所有的模型都是分散的。
我试图实现的功能是,基于一些原点(lon,lat,alt)点,我应该将模型定位到铯中,参考(x,y,z)相对于铯坐标(lon,lat,alt) )
例如
原点地理坐标 (ori_lon, ori_lat, ori_alt) => (-106.690647, 36.806761, 0)
模型坐标 (m_x, m_y, m_z) => (-150.9, 126.26, 217.7)
铯的期望坐标:(ori_lon + m_x、ori_lat + m_y、ori_alt + m_z)
或一些算法来实现这一点。
我已尝试使用以下文章将 (x, y, z) 转换为具有某些来源 (long, lat, alt) 的 (long, lat, alt),但没有成功:(
解决问题的建议/帮助。
编辑:由于搜索引擎似乎将人们发送到这里寻找笛卡尔到制图的转换,我将在这里提供答案。
该Cartographic.fromCartesian函数是执行此转换的最简单方法。请注意,它将返回Cartographic以弧度表示的 a,而不是度数。返回的高度以米为单位。
var cartographic = Cesium.Cartographic.fromCartesian(cartesian);
console.log(
'lon ' + Cesium.Math.toDegrees(cartographic.longitude) + ', ' +
'lat ' + Cesium.Math.toDegrees(cartographic.latitude) + ', ' +
'alt ' + cartographic.height);
Run Code Online (Sandbox Code Playgroud)
原始答案:如果您在这里阅读原始问题的详细信息,提问者试图在 LLA 空间中将坐标添加在一起,这是不正确的。我原来的答案在这里解释了如何将它们都转换为笛卡尔空间并将结果添加到那里。
这可以通过Cesium.Cartesian3.fromDegrees来完成。
var position = Cesium.Cartesian3.fromDegrees(-106.690647, 36.806761, 0);
var offset = new Cesium.Cartesian3(-150.9, 126.26, 217.7);
Cesium.Cartesian3.add(position, offset, position);
Run Code Online (Sandbox Code Playgroud)
根据offset所在的坐标系,可能需要旋转才能应用于全局笛卡尔空间。例如,如果是东西向北向上,您将使用相应的函数来创建并应用该转换。