准备知识:
Cesium里实现地球自转,第一想到的是每次渲染前移动相机位置。这个位置怎么求?
Cesium里由两个基本坐标系,惯性坐标系和地固坐标系,不了解的可以搜搜其他文章,这里不详细描述。简单就是惯性系的坐标轴方向是不变的,而地固系是随地球自转而转动的。
明白这个就好说了,实现自转其实这里相机位置可以认为在惯性系里是不变的,我们只需求出每个时刻惯性到地固的转换矩阵,就能知道相机位置每时刻在地固中的变化。Cesium本身transform中有地固和惯性坐标系转换的矩阵,输入是JulianDate。(注意,该方法需要加载一些计算用到的资源,所以没加载资源前调用会返回undefined)。
编码就简单啦
vue下:(这里我引入cesium的方式不同,cesium需用this.Cesium调用,有全局引入的直接调Cesium就行)
调用方法
startRun (option = { multiplier: 1 }) {
let viewer = window.earth // 创建cesium的viewer
// 监听每次渲染前执行矩阵求解
viewer.scene.postUpdate.addEventListener(this.rotateSetting)
// 根据option修改一些参数
if (viewer.clock) {
const keys = Object.keys(option)
for