首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >铯Cartesian3垂直向上移动

铯Cartesian3垂直向上移动
EN

Stack Overflow用户
提问于 2021-09-03 12:46:23
回答 2查看 390关注 0票数 1

我想把一个Cartesian3位置垂直向上移动x数量单位(例如,米)。

,我不希望把它转换成制图学,把x添加到海拔,然后秘密地返回到Cartesian3

,执行此操作的最佳方法(性能方面)是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-09-05 14:40:04

超容易的。

代码语言:javascript
复制
    const position = Cesium.Cartesian3.fromDegrees(129.507780, 42.9075, 0);
    const origMagnitude = Cesium.Cartesian3.magnitude(position);
    const verticalAmount = 10;
    const newMagnitude = origMagnitude + verticalAmount;
    const scalar = newMagnitude / origMagnitude;

    const newPosition = new Cesium.Cartesian3();
    Cesium.Cartesian3.multiplyByScalar(position, scalar, newPosition);

这是沙堡链

票数 1
EN

Stack Overflow用户

发布于 2021-09-07 18:48:05

无论它的价值是什么,直接离开地球中心(如另一个答案所示)几乎是上升,但不是一个完美的局部上升。原因是由于自转,地球实际上在赤道附近有一点凸出,而WGS84椭球(铯所使用的)并不是一个完美的球体,它包含了凸起。离开它的中心给你“地心向上”,而不是“大地向上”,这是真正的局部向上。无可否认,这是一个非常微小的差别。

找到合适的局部位置的一种方法是从给定的起始位置请求一个局部坐标系。在下面的示例中,本地up (以及局部的东部和局部北部)是为WGS84表面上已知的位置计算的。在起始位置显示一个绿色点,上面显示一个黄色点,向东方显示一个蓝点。(在这个本地帧中,West是-X,North和South是+Y和-Y )。

沙堡现场演示

代码语言:javascript
复制
var viewer = new Cesium.Viewer("cesiumContainer");

// Get the transform from local east-north-up to Earth Fixed at a known position.
var center = Cesium.Cartesian3.fromDegrees(-79.0, 40.0);
var transform = Cesium.Transforms.eastNorthUpToFixedFrame(center);

// Green dot at center
viewer.entities.add({
  position: center,
  point: {
    color: Cesium.Color.LIME,
    pixelSize: 10
  }
});

// Yellow dot 40 meters above
var above = Cesium.Matrix4.multiplyByPoint(transform,
    new Cesium.Cartesian3(0, 0, 40.0), new Cesium.Cartesian3());

viewer.entities.add({
  position: above,
  point: {
    color: Cesium.Color.YELLOW,
    pixelSize: 10
  }
});

// Blue dot 40 meters East (straight line East of center, not following Earth curvature)
var east = Cesium.Matrix4.multiplyByPoint(transform,
    new Cesium.Cartesian3(40.0, 0, 0), new Cesium.Cartesian3());

viewer.entities.add({
  position: east,
  point: {
    color: Cesium.Color.LIGHTSKYBLUE,
    pixelSize: 10
  }
});

viewer.zoomTo(viewer.entities);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69045207

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档