准备知识:

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 (let k of keys) {viewer.clock[k] = option[k]}}}

停止监听

stopRun () {let viewer = window.earthviewer.clock.multiplier = 1viewer.scene.postUpdate.removeEventListener(this.rotateSetting)},

获取矩阵及更新相机

rotateSetting () {let Cesium = this.Cesiumlet viewer = window.earthif (!viewer || viewer.scene.mode !== Cesium.SceneMode.SCENE3D) {return}const icrfToFixed = Cesium.Transforms.computeIcrfToFixedMatrix(viewer.clock.currentTime)// icrfToFixed 在上面的方法中,若没加载好所需的计算资源会返回undefined,判断下if (Cesium.defined(icrfToFixed)) {const camera = viewer.cameraconst offset = Cesium.Cartesian3.clone(camera.position)const transform = Cesium.Matrix4.fromRotationTranslation(icrfToFixed)camera.lookAtTransform(transform, offset)}}

一切准备就绪,在初始化Cesium后,调用

this.startRun({ multiplier: 1 })

咦?地球没转啊,你莫是坑老子吧?

别急,地球自转24小时一圈,要看到明显转动,我们需要加速一下,增大 multiplier

this.startRun({ multiplier: 1000 })

地球它转起来了!!!

转载请注明出处。

Cesium 实现地球自转效果相关推荐

  1. cesium实现地球自转效果

    文章目录 1.实现效果 2.实现方法 2.1官方参考 2.2具体实现 2.2.1核心代码 2.2.2调用方法 Cesium实战系列文章总目录: 传送门 1.实现效果 2.实现方法 2.1官方参考 参考 ...

  2. 031:cesium地球自转效果

    第031个 点击查看专栏目录 本示例的目的是介绍如何在vue+cesium中实现地球自转效果. 直接复制下面的 vue+cesium源代码,操作2分钟即可运行实现效果. 文章目录 示例效果 配置方式 ...

  3. cesium 模拟地球自转

    cesium 模拟地球自转 cesium 现有的机制分析 默认情况下,cesium 的球体其实在三维中是保持静止的状态. 而随着时间的流逝,默认的背景星空,是在不断地旋转的. 这个逻辑,我们从 ces ...

  4. cesium 实现地球自转

    我们用typescript 实现一个地球自转工具类. /**地球自转 / export class GlobalRotate{ private viewer: any = null; private ...

  5. cesium实现地球自转功能

    地球自转 var i let previousTime function startRotate() {stopRotate()previousTime = viewer.clock.currentT ...

  6. Cesium实现地球自转明暗分割,类似官网封面效果

    这几天博主没事看Cesium官网的时候,觉得首页的地球自转效果就很炫酷,想着自己也做一个,奈何想不到思路,在CSDN和stackoverflow上也没有找到类似的功能,所以就只能自己造轮子了,这个效果 ...

  7. html制作地球自转,利用CSS3实现地球自转

    这篇文章主要介绍了关于利用CSS3实现地球自转,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 CSS3实现地球自转,不可思议啊,不过确实可以实现,不信的朋友可以祥看本文,附送源码 最终 ...

  8. html 地球页面代码,纯CSS3实现地球自转实现代码(图文教程附送源码)

    最终成果: 素材:两张图片, espaco.jpg(1600*1000) terra.jpg(900*450) 第一步,形成静态图(地球背景全屏,地球大小为450px*450px,地球位置为上下左右居 ...

  9. html怎么实现地球自转,纯CSS3实现地球自转的教程

    相信很多人在听到CSS3实现地球自转的时候都会很惊讶,不过css确实可以实现地球自转,那么你知道纯CSS3如何实现地球自转吗?好奇的小伙伴们一起跟爱站小编去看看纯CSS3实现地球自转的教程吧. 最终成 ...

最新文章

  1. SAP WM中阶下架策略A(Partial Pallet Quantity)
  2. Python opencv 获取图像形状大小
  3. 人工智能、物联网和大数据如何拯救蜜蜂
  4. SpringBootApplication注解
  5. 开关造成的毛刺_模具清洗机干冰清洗机干冰去毛刺机安全注意事项
  6. 前端学习(1416):ajax的运行原理
  7. python画两条曲线图_python绘制多个曲线的折线图
  8. java二期_JAVA基础之多线程二期
  9. arccatalog点要素显示不完,shp数据全图显示正常,放大要素不能显示的问题
  10. ChaiNext:过去24小时比特币向底部试探
  11. Front_end - - BOM和DOM
  12. SpringMVC入门实例及详细讲解
  13. 3年flash游戏开发小结
  14. 【MATLAB航空航天工具箱】学习笔记--IERS国际地球自转服务的公报
  15. java中的if语句_java中的条件判断语句
  16. Docker 搭建 LNMP + Wordpress(详细步骤)
  17. java sof栈泄露_java虚拟机(四)--内存溢出、内存泄漏、SOF
  18. 继电器模块典型电路图
  19. numpy_subtract函数
  20. python 定时器、每天凌晨3点执行方法_python 定时器,实现每天凌晨3点执行的方法...

热门文章

  1. Excel 用countif 统计
  2. java 逻辑运算符(韩顺平)
  3. 场景代码题:有200个骑手都想要抢这⼀个外卖单子,如何保证只有一个骑手接到单子?
  4. 常用MD5解密工具,仅限于密码学研究
  5. extends在java中是什么意思_java中extends的意思是什么
  6. uses-permission和permission区别及使用
  7. gitee一直pushing如何解决
  8. 【调剂】桂林电子科技大学 智能驾驶 景晖 课题组有2-3调剂名额!
  9. 小公司体系不完整,研发总背锅,要不要辞职?
  10. 90后情侣3年攒100万裸辞飞荷兰