经纬志
首页 / Cesium / 使用示例

扫描雷达

以雷达站为圆心,一个 50 度的扇形绕圈扫过,量程圈分三档, 圈内三个目标点用暖色标出。扫描可以暂停在任意角度。

CesiumJS 1.121 · 更新 2026-10-27
源码与运行效果
运行效果

扇区顶点怎么生成

多边形的第一个顶点是圆心,后面是沿弧线均匀采样的 18 个点。 每个采样点的角度等于「当前旋转角减去半宽,再加逐点偏移」, 经度方向用 cos、纬度方向用 sin, 半径换算成度时经度要除以纬度的余弦,否则扇区在东西方向会被拉长。

半径 24 公里换算下来纬度方向约 0.2156 度,经度方向约 0.252 度。 直接给两个方向相同的度数,看上去就是一个被压扁的椭圆。

用 CallbackProperty 驱动旋转

polygon.hierarchy 被包成 CallbackProperty, 每帧按当前时间重新算一遍顶点。暂停时切换到一个冻结的角度值, 动画立即停住,不需要销毁重建实体。

多边形的顶点数只有 19 个,重算成本很低。如果扇区采样到上百个点, 建议改成用 EllipseGraphics 配合旋转贴图,或者把扫描做成 shader 材质,避免每帧三角剖分。

可调参数

位置改什么效果
RADIUS24000 改成 60000量程圈与扇区一起放大
SWEEP50 度改成 120 度扫描带更宽,视觉更慢
% 6000改成 2000转速提升三倍
[0.33, 0.66, 1.0]加一项 0.5距离圈变四档
扇区材质 alpha0.30 改成 0.6扫描带更实,目标点对比下降

扇区边缘有锯齿。采样只有 18 段,近距离看弧线是多边形。 把采样数提到 36 以上即可,代价可以忽略。另外扇区贴在椭球面上, 相机压得很低时会和球面发生深度冲突,把 height 抬到 1 到 5 米就能消除。

换成真实雷达数据

真实回波不是一块均匀的扇形,而是按方位角和距离分格的值。做法是把极坐标网格 换算成经纬度小方格,按回波强度给每个格子单独上色,扇区只保留作为「当前扫描角」的指示。 数据量在几千格以上时,用 Primitive 批量提交,不要逐格建 Entity。