Cesium飞行定位方法中,destinationorientation参数之间的关系可以用以下数学公式表示:

  1. 当只设置了destination参数时,相机保持当前朝向不变,直接飞往目标位置。

  2. 当只设置了orientation参数时,相机以当前位置为起点,沿着指定的朝向方向飞行。

  3. 当同时设置了destinationorientation参数时,相机需要在飞行过程中既要到达目标位置,又要按照指定的朝向进行旋转。这个问题可以通过计算相机的旋转矩阵来解决。具体地,假设相机当前位置为P0,目标位置为P1,相机当前的朝向为Q0,期望的朝向为Q1,则可以按照以下步骤计算相机的旋转矩阵:

  • 计算相机当前位置与目标位置之间的方向向量D = normalize(P1 - P0);
  • 计算当前朝向Q0对应的旋转矩阵R0;
  • 计算期望朝向Q1对应的旋转矩阵R1;
  • 将R0和R1插值得到一个新的旋转矩阵Rt,其中插值系数由缓动函数控制;
  • 将D和Rt组合得到最终的旋转矩阵Rf。

然后,可以将destination参数设置为目标位置P1,将orientation参数设置为旋转矩阵Rf,即可实现相机在飞行过程中保持朝向不变的效果。

在Cesium飞行定位中,destinationorientation参数之间的数学关系可以表示为:

假设当前相机位置为P0,目标位置为P1,当前朝向为Q0,期望朝向为Q1,pitch参数为α,则有:

  1. 当只设置了destination参数时,相机保持当前朝向不变,直接飞往目标位置:
flyTo(P1, {orientation: Q0,pitch: α
});
  1. 当只设置了orientation参数时,相机以当前位置为起点,沿着指定的朝向方向飞行:
let D = normalize(Q1 * Cartesian3.UNIT_Z); // 计算方向向量
let Rf = Matrix3.fromQuaternion(Quaternion.rotationBetween(Q0, D)); // 计算旋转矩阵
flyTo(P0, {orientation: Rf,pitch: α
});
  1. 当同时设置了destinationorientation参数时,相机需要在飞行过程中既要到达目标位置,又要按照指定的朝向进行旋转。这个问题可以通过计算相机的旋转矩阵来解决:
let D = normalize(P1 - P0); // 计算方向向量
let R0 = Matrix3.fromQuaternion(Q0); // 计算当前朝向对应的旋转矩阵
let R1 = Matrix3.fromQuaternion(Q1); // 计算期望朝向对应的旋转矩阵
let Rt = Matrix3.lerp(R0, R1, t); // 计算插值后的旋转矩阵,t为插值系数
let Rf = Matrix3.multiply(Rt, Matrix3.fromRotationX(Cesium.Math.toRadians(α))); // 将pitch角度合并到旋转矩阵中
flyTo(P1, {orientation: Rf,pitch: 0
});

其中,normalize函数用于将向量归一化,Quaternion.rotationBetween函数用于计算两个四元数之间的旋转变换,Matrix3.lerp函数用于计算两个矩阵之间的线性插值。

cesium——相机飞行定位原理相关推荐

  1. cesium——飞行定位

    Cesium的飞行定位,主要通过Viewer.Camera这两个类实现的.其中viewer.flyTo().camera.flyTo().camera.flyToBoundingSphere()这三个 ...

  2. cesium 飞行定位

    cesium 飞行定位 // 定位到中国var camera = viewer.scene.camera;camera.flyTo({//镜头的经纬度.高度.镜头默认情况下,在指定经纬高度俯视(pit ...

  3. 初识视觉SLAM 用相机解决定位和建图问题

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 引言:视 ...

  4. Decawave UWB定位原理

    先来看看UWB 在百科中的定义: UWB(Ultra Wideband)是一种无载波通信技术,利用纳秒至微微秒级的非正弦波窄脉冲传输数据.有人称它为无线电领域的一次革命性进展,认为它将成为未来短距离无 ...

  5. Android百度地图(一):百度地图定位sdk 类方法参数、定位原理详细介绍

    ***转载.引用请标明出处*** http://www.jianshu.com/p/29ccac3e1e42 本文出自[zhh_happig的简书博客](http://www.jianshu.com/ ...

  6. GPS、WiFi、基站、AGPS几种定位原理介绍与区别

    定位器的原理: "三角定位法",知道了用户到三个固定点的距离,就能计算出用户的位置. 1.GPS GPS(Global Positioning System)即全球定位系统,它是由 ...

  7. 飞机里黑匣子的定位原理

    飞机里黑匣子的定位原理 2022年3月21日,东航一架由昆明飞往广州的波音737-800飞机在广西梧州坠落.事情已经过去一天,首先我们要为全体乘客和机组人员祈福,今天这篇文章我们就来深入讲解一下飞机里 ...

  8. 双目视觉焦距_双目视觉三维定位原理解析

    双目立体视觉是一门有着广阔应用前景的学科,根据双目立体视觉CCAS提供的思路及组成原理,随着光学.电子学以及计算机技术的发展,将不断进步,逐渐实用化,不仅将成为工业检测.生物医学.虚拟现实等领域的关键 ...

  9. 相机自动对焦AF原理

    相机自动对焦AF原理 AF性能是判断相机好坏的重要指标,主要从准确度和速度两个方面来进行考察,本文将介绍自动对焦的几种方式. 一.凸透镜成像原理 二.三种对焦方法 有公式在手,只要给相机安个测距仪就好 ...

最新文章

  1. 工作经验到底是个什么东东?工作经验从哪里来?
  2. Google AutoML最新技术解析:AutoML-Zero,从0构建模型
  3. 正则表达式--密码复杂度验证--必须包含大写、小写、数字、特殊字符中的至少三项
  4. 【数据结构与算法】之深入解析“最长有效括号”的求解思路与算法示例
  5. webservice的css哪里添加,jQuery_XML+XSLT+CSS+JQuery+WebService组建Asp.Net网(2), 3.       更 - phpStudy...
  6. 68 cookie在登录中的作用
  7. 为什么openstack要用rabbitmq这类消息中间件来进行RPC这类的操作呢,直接rpc不行吗?
  8. uart串口通信_听说UART与STM32的HAL库更配哦
  9. 计分及竞赛软件启动时的错误现象及解决方法
  10. 盘点大数据分析AI工具的常用算法
  11. maya怎么导出abc格式_maya导入abc文件到UE4
  12. 实现webIM技术小结——websocket IM原理篇
  13. [转] 怎么固定KMPlayer窗口大小
  14. 3D建模京东商品3D展示怎么做?
  15. 图观——渲染一个简易的三维场景
  16. JavaScript 中创建对象的方法(读书笔记思维导图)
  17. 软件设计 -- 数据流图,数据字典,ER图
  18. Threejs围墙动画
  19. leetcode刷题250天(65)——1823. 找出游戏的获胜者(约瑟夫环问题)
  20. 使用PyQt绘制精美的股票行情分时线图

热门文章

  1. Zero-shot-RIS
  2. when you start Windows 7: The Windows Boot Configuration Data file is missing required information
  3. 电脑出现bootmgr is conmpressed的解决方法
  4. 一箭双雕 破解曹操行刺董卓献刀连环计(转)
  5. 一小时了解数据挖掘①:解析常见的大数据应用案例
  6. 微信小程序自定义修改swiper指示点样式
  7. 用计算机制作一张家庭年收支表,如何制作excel收入支出表
  8. 从14次“一轮游”到问鼎大满贯 “灰姑娘”张帅这样逆袭
  9. 结构体struct声明、定义
  10. Hotmail Javascript安全漏洞