cesium 之 flyTo、setView、lookat
orientation配置项的参数
cesium中,朝向orientation,通常使用heading、pitch、roll这三个参数来描述
heading
通过调整`heading`的值,使相机朝向特定的方向朝向方向说明【北:0, 东:π/2弧度, 南:π弧度, 西:-π/2弧度】'例如':让,相机朝向,西北方向:将heading设置为正北(0弧度)和正西(-π/2弧度)之间的某个值让,相机朝向,西南方向:将heading设置为正南(π弧度)和正西(-π/2弧度)之间的某个值
pitch
pitch:'控制相机的俯仰角',它的值决定了,'相机视线' 与 '地平面' 之间的角度因为,'pitch是以弧度为单位的',
所以,它的取值范围在理论上是从负无穷到正无穷,
但是,实际上对于相机的可视化来说,它的有效范围是有限的。1、Cesium.Math.toRadians(0):相机水平看向地平线(默认值),相机的视线,完全平行于地平面2、Cesium.Math.toRadians(-90):相机直视地面,相机的视线,完全垂直于地平面,朝向地面3、Cesium.Math.toRadians(90):相机直视天空,相机的视线,完全垂直于地平面,朝向天空在某些情况下,由于'地球曲率'和'相机的近裁剪面(near clipping plane)'的限制,相机可能无法完全直视天空补充:1、介于`Cesium.Math.toRadians(-90)` 和 `Cesium.Math.toRadians(90)`之间的值,表示:相机在地面和天空之间的某个角度上,正值(表示相机向上看),负值(表示相机向下看)2、pitch的值,不能超过其有效范围,否则可能会导致相机视图不可见或不可预测的行为。3、'pitch的值,是相对于地平面的',而不是,相对于相机当前位置的法线方向,因此,当相机位置发生变化时,相同的pitch值可能会导致相机看向不同的方向,如果需要让相机始终朝向某个固定点或方向,可能需要使用其他方式(如lookAt方法或调整相机的位置和朝向)来实现。
roll
roll:用于描述,相机绕其视线方向(Direction轴,即+X轴)旋转的角度,'单位是弧度'。(roll通常用于表示,相机在保持heading和pitch不变的情况下,绕其视线方向的旋转)定义:roll:相机绕Direction轴(视线方向)旋转的角度,Direction轴为+X轴,且绕+X轴旋转为正。【右手定则】核心:以`场景`为根本当你的右手拇指指向X轴的正方向(即视线方向)时,其他四个手指的弯曲方向表示了旋转的正方向。【旋转方向】:roll为正,相机将绕视线方向,顺时针旋转(根据右手定则来转)roll为负,相机将绕视线方向,逆时针旋转(根据右手定则来转)例子:1、Cesium.Math.toRadians(0):表示,相机没有发生绕视线方向的旋转,即保持其原始朝向。2、Cesium.Math.toRadians(180)(或Math.PI):表示,相机绕视线方向旋转了180度,即相机上下颠倒。3、介于Cesium.Math.toRadians(0)和Cesium.Math.toRadians(180)之间的值:表示,相机在保持heading和pitch不变的情况下,绕视线方向发生了不同程度的旋转。实际应用在Cesium中,roll通常用于模拟某些特殊效果,如:飞机的翻滚动作、相机的特殊视角,在大多数情况下,你可能不需要频繁地调整roll的值,但在需要精细控制相机视角时,了解并调整roll可能会很有帮助。
---------------------------------------------------------------
三种方法
flyTo
viewer.value.camera.flyTo({// destination:目的地destination: Cesium.Cartesian3.fromDegrees(-122.4175, 37.655, 400),duration: 3.0, // 飞行持续时间(秒)orientation: {heading: Cesium.Math.toRadians(20), // 朝向(单位:弧度,20度,转换为弧度)pitch: Cesium.Math.toRadians(-15), // 倾斜(单位:弧度,-15度,转换为弧度)roll: 0.0 // 翻滚(通常设置为0)},complete: () => {console.log('飞行动画完成后,被调用')},cancel: () => {console.log('飞行动画被取消时,被调用')}
})
setView
const setView = () => {// 将相机移动到北京的上空,并朝向地面const position = Cesium.Cartesian3.fromDegrees(116.4, 39.9, 1000)viewer.value.camera.setView({destination: position,orientation: {heading: Cesium.Math.toRadians(0),pitch: Cesium.Math.toRadians(-90),roll: Cesium.Math.toRadians(90)}})
}
lookat
'lookAt方法',用于将相机(即视角)锁定到指定的位置,并可能在此基础上应用一定的偏移。【语法】let target = Cesium.Cartesian3.fromRadians(经度, 纬度, height) // 设置目标位置let offset = new Cesium.HeadingPitchRange(heading, pitch, range) // 设置偏移viewer.camera.lookAt(target, offset)例子:const lookat = () => {/* Cesium.Cartesian3.fromDegrees(120.0, 30.0, 3000000)将经纬度(120.0, 30.0)和高度(3000000 米)转换为 Cartesian3对象(表示3D空间中的一个点)这里设置的目标位置是:东经120.0度、北纬30.0度,并且距离地球表面3000000米*/const target = Cesium.Cartesian3.fromDegrees(120.0, 30.0, 3000000)/*0:相机的朝向(Heading),表示正北方向Cesium.Math.PI_OVER_TWO:相机的俯仰(Pitch),表示相机向下看,即朝向地球。【Cesium.Math.PI_OVER_TWO 等于 Math.PI / 2,即90度】 所以 “-Cesium.Math.PI_OVER_TWO 等于 -90度”,即指向地面。5000000:是相机的范围(Range),表示,相机距离目标点的距离是`5000000`米。*/const offset = new Cesium.HeadingPitchRange(0, -Cesium.Math.PI_OVER_TWO, 5000000)viewer.value.camera.lookAt(target, offset)}相关文章:
cesium 之 flyTo、setView、lookat
orientation配置项的参数 cesium中,朝向orientation,通常使用heading、pitch、roll这三个参数来描述 heading 通过调整heading的值,使相机朝向特定的方向朝向方向说明【北:0, 东:π/2弧度, …...
超速解读多模态InternVL-Chat1.5 ,如何做到开源SOTA——非官方首发核心技巧版(待修订)
解读InternVL-chat1.5系列 最近并行是事情太杂乱了,静下心来看一看优秀的开源项目,但是AI技术迭代这么快,现在基本是同时看五、六个方向的技术架构和代码,哪个我都不想放,都想知道原理和代码细节,还要自己训练起来&am…...
Vue 组件_动态组件+keep-alive
文章目录 Vue 动态组件 keep-alive知识点讲解业务场景实例代码实现keep-alive Vue 动态组件 keep-alive 知识点讲解 通过 Vue 的 <component> 组件和特殊的 is 属性实现的。 <!-- curentComponent 改变时组件也改变 --> <component :is"componentMap[…...
深入理解Redis:多种操作方式详解
Redis(Remote Dictionary Server)是一款高性能的开源键值存储系统,广泛应用于缓存、会话管理、实时分析等领域。它支持多种数据结构,如字符串、哈希、列表、集合和有序集合等,提供了丰富的操作命令。本篇博客将详细介绍…...
stm32太阳能追光储能系统V2
大家好,我是 小杰学长 stm32太阳能追光储能系统V2. 增加了命令行交互和内置AT指令解析框架 (就是可以用电脑串口发送at指令控制板子的所有功能) 改动了spi 换成硬件 改动了硬件电源 增加了pcb原理图 附带上pcb源文件 增加了freertos 互斥锁…...
Docker笔记-解决非交互式运行python时print不输出的问题
换句话来说就是在docker中如何不会python的print 只需要在启动时,不让python缓冲其输出。 关键命令如下:PYTHONUNBUFFERED1 如下: docker run -e PYTHONUNBUFFERED1 <your_image> 下面解释下-e "-e"选项的全称是"…...
06- 数组的基础知识详细讲解
06- 数组的基础知识详细讲解 一、基本概念 一次性定义多个相同类型的变量,并且给它们分配一片连续的内存。 int arr[5];1.1 初始化 只有在定义的时候赋值,才可以称为初始化。数组只有在初始化的时候才可以统一赋值。 以下是一些示例规则: …...
CentOS6系统因目录有隐含i权限属性致下属文件无法删除的故障一例
CentOS6服务器在升级openssh时因系统目录权限异常(有隐含i权限属性),下属文件无法删除,导致系统问题的故障一例。 一、问题现象 CentOS6在升级openssh时,提示如下问题: warning: /etc/ssh/sshd_config c…...
【视频转码】ZLMediaKit漏洞报告的问题
漏洞问题: 支持ss1 rc4密码套件(bar mitzvah) 漏洞级别: 中危 漏洞修复: 方法:避免使用RC4密码,参考代码如下: 修改文件位于:webrtc/DtlsTransport.cpp ret SSL_CTX_set_cipher_list(ssl…...
100道大模型面试八股文
算法暑期实习机会快结束了,校招大考即将来袭。 当前就业环境已不再是那个双向奔赴时代了。求职者在变多,岗位在变少,要求还更高了。 最近,我们陆续整理了很多大厂的面试题,帮助球友解惑答疑和职业规划,分…...
【ARM Cache 及 MMU 系列文章 6.2 -- ARMv8/v9 Cache 内部数据读取方法详细介绍】
请阅读【ARM Cache 及 MMU/MPU 系列文章专栏导读】 及【嵌入式开发学习必备专栏】 文章目录 Direct access to internal memoryL1 cache encodingsL1 Cache Data 寄存器Cache 数据读取代码实现Direct access to internal memory 在ARMv8架构中,缓存(Cache)是用来加速数据访…...
使用Vue.js将form表单传递到后端
一.form表单 <form submit.prevent"submitForm"></form> form表单像这样写出来,然后把需要用户填写的内容写在form表单内。 二.表单内数据绑定 <div class"input-container"><div style"margin-left: 9px;"&…...
6、架构-服务端缓存
为系统引入缓存之前,第一件事情是确认系统是否真的需要缓 存。从开发角度来说,引入缓存会提 高系统复杂度,因为你要考虑缓存的失效、更新、一致性等问题;从运维角度来说,缓存会掩盖一些缺 陷,让问题在更久的…...
服务器遭遇UDP攻击时的应对与解决方案
UDP攻击作为分布式拒绝服务(DDoS)攻击的一种常见形式,通过发送大量的UDP数据包淹没目标服务器,导致网络拥塞、服务中断。本文旨在提供一套实用的策略与技术手段,帮助您识别、缓解乃至防御UDP攻击,确保服务器稳定运行。我们将探讨监…...
美团发布2024年一季度财报:营收733亿元,同比增长25%
6月6日,美团(股票代码:3690.HK)发布2024年第一季度业绩报告。受益于经济持续回暖和消费复苏,公司各项业务继续取得稳健增长,营收733亿元(人民币,下同),同比增长25%。 财报显示,一季度,美团继续…...
sql注入-布尔盲注
布尔盲注(Boolean Blind SQL Injection)是一种SQL注入攻击技术,用于在无法直接获得查询结果的情况下推断数据库信息;它通过发送不同的SQL查询来观察应用程序的响应,进而判断查询的真假,并逐步推断出有用的信…...
docker-compose部署 kafka 3.7 集群(3台服务器)并启用账号密码认证
文章目录 1. 规划2. 服务部署2.1 kafka-012.2 kafka-022.3 kafka-032.4 启动服务 3. 测试3.1 kafkamap搭建(测试工具)3.2 测试 1. 规划 服务IPkafka-0110.10.xxx.199kafka-0210.10.xxx.198kafka-0310.10.xxx.197kafkamp10.10.xxx.199 2. 服务部署 2.1…...
LeetCode-704. 二分查找【数组 二分查找】
LeetCode-704. 二分查找【数组 二分查找】 题目描述:解题思路一:注意开区间和闭区间背诵版:解题思路三: 题目描述: 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target …...
Rust 性能分析
都说Rust性能好,但是也得代码写得好,猜猜下面两个代码哪个快 . - 力扣(LeetCode) use std::collections::HashMap; use lazy_static::lazy_static;lazy_static! {static ref DIGIT: HashMap<char, usize> {let mut m HashMap::new();for c in …...
Gradle和Maven都是广泛使用的项目自动化构建工具
Gradle和Maven都是广泛使用的项目自动化构建工具,但它们在多个方面存在差异。以下是关于Gradle和Maven的详细对比: 一、构建脚本语言 Maven:使用XML作为构建脚本语言。XML的语法较为繁琐,不够灵活,对于复杂的构建逻辑…...
C++初阶-list的底层
目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...
《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...
Python爬虫实战:研究feedparser库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...
【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例
文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...
oracle与MySQL数据库之间数据同步的技术要点
Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异,它们的数据同步要求既要保持数据的准确性和一致性,又要处理好性能问题。以下是一些主要的技术要点: 数据结构差异 数据类型差异ÿ…...
Rapidio门铃消息FIFO溢出机制
关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系,以下是深入解析: 门铃FIFO溢出的本质 在RapidIO系统中,门铃消息FIFO是硬件控制器内部的缓冲区,用于临时存储接收到的门铃消息(Doorbell Message)。…...
技术栈RabbitMq的介绍和使用
目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...
面向无人机海岸带生态系统监测的语义分割基准数据集
描述:海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而,目前该领域仍面临一个挑战,即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分: 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...
android RelativeLayout布局
<?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"match_parent"android:gravity&…...
