Cesium实现可视化分析
一、地形可视域主要实现技术(Ray + 地形碰撞检测)
Cesium 本身的 Ray 类可以用来执行非常精确的射线检测,我们可以结合地形高度(sample)来逐点检测光线是否与 terrain 相交,从而判断是否可见。
1.1 优势
- 实时判断每条射线是否被 terrain 遮挡
- 地形自适应,无需手动插值点
- 可用于单点/多点、动态或静态场景
1.3 实现思路
- 1、从观察点生成一条 Ray(方向 = 目标点 - 观察点);
- 2、在这条 Ray 上按一定间隔采样点;
- 3、对这些点采样地形高度;
- 4、比较:如果地形高 > Ray 上该点高,说明被遮挡
1.3 核心代码如下
根据起点和终点生成一条射线Rag
const start = startCartesian;
const end = endCartesian;
const direction = Cesium.Cartesian3.subtract(end, start, new Cesium.Cartesian3());
Cesium.Cartesian3.normalize(direction