发布于 2021-09-05 14:40:04
超容易的。
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);这是沙堡链
发布于 2021-09-07 18:48:05
无论它的价值是什么,直接离开地球中心(如另一个答案所示)几乎是上升,但不是一个完美的局部上升。原因是由于自转,地球实际上在赤道附近有一点凸出,而WGS84椭球(铯所使用的)并不是一个完美的球体,它包含了凸起。离开它的中心给你“地心向上”,而不是“大地向上”,这是真正的局部向上。无可否认,这是一个非常微小的差别。
找到合适的局部位置的一种方法是从给定的起始位置请求一个局部坐标系。在下面的示例中,本地up (以及局部的东部和局部北部)是为WGS84表面上已知的位置计算的。在起始位置显示一个绿色点,上面显示一个黄色点,向东方显示一个蓝点。(在这个本地帧中,West是-X,North和South是+Y和-Y )。
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);https://stackoverflow.com/questions/69045207
复制相似问题