gpt4 book ai didi

cesiumjs - Cesium 中的折线与地形相交

转载 作者:行者123 更新时间:2023-12-02 04:24:49 26 4
gpt4 key购买 nike

我正在使用铯,并试图检测折线与地球地形相交的位置。我有一条多段线,它从空中的某个点开始,以一定的角度向地球延伸。

现在我正在使用设定的距离计算终点,所以我有一个起点和终点。我想检测这条折线首先撞击地球表面的位置,并在该点停止绘制。例如,如果有一座 Alpine ,我不希望线路在山的另一边继续。

我使用 IntersectionTests 尝试了几种不同的方法,特别是 grazingAltitudeLocationrayEllipsoid 但没有任何运气。我一直在用折线的起点和终点创建一条射线,然后使用viewer.scene.globe.ellipsoid作为函数中的椭球体。我不断将起点作为交点返回。

有谁知道我做错了什么,或者有其他方法的建议吗?任何帮助将不胜感激。

编辑:这是编辑/添加的内容

这是我使用的代码,grazingAltitudeLocation 返回起点,rayEllipsoid 返回未定义。

var viewer = new Cesium.Viewer('cesiumContainer');
var scene = viewer.scene;
var globe = scene.globe;
var ellipsoid = scene.globe.ellipsoid;
var primitives = scene.primitives;

globe.depthTestAgainstTerrain = true;

var cesiumTerrainProviderMeshes = new Cesium.CesiumTerrainProvider({url : '//cesiumjs.org/stk-terrain/tilesets/world/tiles'});
scene.terrainProvider = cesiumTerrainProviderMeshes;

var startLon = -117.69;
var startLat = 35.69;
var startElv = 20000;
var endLon = -120.0417;
var endLat = 39.0917;
var endElv = 0;

var startCart = Cesium.Cartographic.fromDegrees(startLon, startLat, startElv);
var start = ellipsoid.cartographicToCartesian(startCart);

var endCart = Cesium.Cartographic.fromDegrees(endLon, endLat, endElv);
var end = ellipsoid.cartographicToCartesian(endCart);

var ray = new Cesium.Ray(start, end);

var intersection = Cesium.IntersectionTests.grazingAltitudeLocation(ray, ellipsoid);

var intersection2 = Cesium.IntersectionTests.rayEllipsoid(ray, ellipsoid);
var point = Cesium.Ray.getPoint(ray, intersection2.start);

最佳答案

我认为你应该这样做 picking on Globe ,不在椭球上。希望这会有所帮助:

function pickGlobeIntersection(viewer, p0, p1) {
//all positions are in Cartesian3
var direction = new Cesium.Cartesian3();
Cesium.Cartesian3.subtract(p1, p0, direction);
Cesium.Cartesian3.normalize(direction, direction);

var ray = new Cesium.Ray(p0, direction);
var hitPos = viewer.scene.globe.pick(ray, viewer.scene);

if ((hitPos !== undefined) && (hitPos !== null)) {
return hitPos;
} else {
return null;
}
}

问候

关于cesiumjs - Cesium 中的折线与地形相交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25373300/

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