Cesium卫星轨道展示-模型法
cesium针对模拟动画的解决方案-模型法。
cesium在进行动画展示这一块的功能比较完善。最近有一个需求,需要进行模拟卫星的飞行轨迹,如果可以实现,针对扫描卫星需要添加模拟扫描光波。
3D模型在线预览提供多种低代码平台3D模型在线预览解决方案,实现了将多种3D模型格式无缝集成到低代码业务表单中。这意味着用户可以在不离开低代码平台的情况下,直接查看和操作3D模型,极大地提升了数据可视化的效果和用户交互体验。
模型法
首先,我认为既然要实现卫星扫描轨迹,那么肯定需要两个模型:卫星模型和扫描模型。卫星模型网上有,glb或者gltf的都行,而扫描模型我直接使用Cesium的几何模型去实现圆锥即可。
1.初始化Vierer
2. 时间定义
动画的执行都是与时间有关的,从什么时间开始,到什么时间结束。而Cesium使用了不同于我们js常用的时间规范,需要用到Cesium.JulianDate
。Cesium.JulianDate
是指示在 Cesium 中添加或描述对象动画时使用的 Julian Date 格式的时间标签。Julian Date 是以天为单位计数的相对格林尼治标准时间的一种计时法。
所以以下代码意思我们以当前时间为基准,6分钟内执行动画。但是速率是10。
Cesium.JulianDate.addHours()
:是一种可以在 Julian 时间戳上增加指定小时数的方法。Cesium.JulianDate.addSeconds()
同理增加秒。
- julianDate - Julian 日期时刻,可以是 JulianDate 对象或 secondsSinceEpoch 值。
- hours - 要添加的小时数,可以为负值表示减小。
- result - 可选,用于存储结果的 JulianDate 对象。
Cesium.JulianDate.clone()
:用于克隆一个 JulianDate 对象。
viewer.timeline.zoomTo(start, stop)
方法可以用来在时间轴控件中设置一个时间窗口并自动居中和缩放。
- start - 时间窗口起始时间,可以是Date对象或JulianDate对象。
- stop - 时间窗口结束时间。
3.轨迹处理方法
上面定义好了播放时间以及时间间隔等等,那么准备工作做完了,可以开始构建模型了。
先定义一些存储路径变量的方法:
定义轨迹方法:
可以看出这个方法利用传进去的是否纬度标识,如果是就构造了一个固定纬度degree,经度360度分段的循环数组,反之一样。所以这些变量其实可以根据自己需要定义初始化或者调整。
经纬度转换为Cesium模型使用的position
4. 模型构建
定义好上一步方法,定义模型即可。这边三个参数ifLat, degree, hen含义上面方法也需要使用,含义分别就是是否纬度,角度以及卫星高度。
5. 开始执行
我们给第四步添加好ifLat, degree, hen三个参数就可以看到一颗卫星运行起来。我们可以把上一步继续封装来实现多个卫星运行。