Cesium相机理解

关于cesium相机,包括里面内部原理网上有很多人讲的都很清楚了,我感觉这两个人写的都挺好得:

相机 Camera | Cesium 入门教程 (syzdev.cn)

Cesium中的相机—setView&lookAtTransform_cesium setview_云上飞47636962的博客-CSDN博客上面这两篇文章讲的还是挺全面得,但是我感觉对于第一次接触三维得人来讲,专业术语还是比较多,理解起来我感觉还是有点抽象。

我得理解就是,相机由两部分构成,位置和姿势,位置很好理解,就是在什么地方作为拍摄点,姿态角就可以理解为怎么看,就比如我们拍照得时候,找个角度拍摄。

姿态由三个属性决定,heading,pitch,roll。我们可以结合下面这个图理解一下。

 我们可以把这个相机代入我们得大脑,heading控制着我们左右摇头,pitch控制着上下点头,roll控制着歪头。下面结合cesium来理解一下。

先看下pitch。

首先我们把pitch设置为0度。heading,roll设置为0,下图就是cesium平行与地面得样子。就相当于我们站在一个位置,眼睛看向正北方向。 


 pitch=90°就是相当于我们仰着头看天。

 pitch=-90°就相当于低头看地。

 heading=0°

 heading=-40°得时候,就相当于我们向左扭头,左侧区域就会变大

 heading=40°,相当于我们向右看,右侧区域就会变大

roll=-90°,相当于我们往左歪着脖子看,也可以理解为左耳朵贴地侧躺,一半眼睛看天,一半眼睛看地,拍照出的效果如下,只能看到一半得区域

 

 roll=90°和上面得相反。

 上面代码就是关于相机和姿势角我个人得理解,仅仅说明相机得用法,关于相机得原理我会在后面再讲。

这一段得代码在gitee上面CesiumBim: cesium和bim开发的案例这个位置。

关于相机得其他api,我上面引用得那两篇文章,讲解得很不错,我就不再抄一遍了,有不懂的可以交流一下。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/29714.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Linux】进程间通信——system V共享内存

目录 写在前面的话 System V共享内存原理 System V共享内存的建立 代码实现System V共享内存 创建共享内存shmget() ftok() 删除共享内存shmctl() 挂接共享内存shmat() 取消挂接共享内存shmdt() 整体通信流程的实现 写在前面的话 上一章我们讲了进程间通信的第一种方式…

Linux基础学习

文章目录 Linux命令学习Linux环境准备Linux命令行学习Linux命令行格式与文件系统linux实用命令笔记Linux文件权限查看 Linux命令学习 理解Linux命令是什么 (图形化的操作,文件查看,浏览器打开) 你打开一个谷歌浏览器,…

微积分入门:总结归纳汇总(一)

基础 标准符号约定: ( s i n x ) n (sinx)^n (sinx)

Spring Aop组成部分

Spring Aop (Aspect orirnted Programming)面向切面编程,是对面向对象编程的一种补充,是一种编程思想,是对某一类的事情的集中处理。 比如用户登录状态的验证状态,在之前写servlet版本的博客系统,这里就有…

模拟实现消息队列项目(系列4) -- 服务器模块(内存管理)

目录 前言 1. 创建MemoryDataCenter 2. 封装Exchange 和 Queue方法 3. 封装Binding操作 4. 封装Message操作 4.1 封装消息中心集合messageMap 4.2 封装消息与队列的关系集合queueMessageMap的操作 5. 封装未确认消息集合waitMessage的操作 6. 从硬盘中恢复数据到内存中 7. Memo…

ceph pg inconsistent修复(unexpected clone)

问题概述: ceph -s 显示pg 10.17 inconsistent 且命令ceph pg repair 10.17无法修复,/var/log/ceph/cep-osd.3.log报错内容如下: pg 10.17 osd [3,4] 权威副本osd:3 repair 10.17 10:e889b16a:::rbd_data.88033092ad95.00000000…

Linux 命令之 - scp(从远端机器拉取数据)

scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的。 命令格式: scp [参数] [原路径] [目标路径]从本地服务器复制到远程…

面试攻略,Java 基础面试 100 问(一)

面向对象的特征有哪些方面? 抽象(Encapsulation):封装的目的是为了保证变量的安全性,使用者不必在意具体实现细节,而只是通过外部接口即可访问类的成员 如果不进行封装,类中的实例变量可以直接查看和修改,可能给整个…

工具推荐:Wireshark网络协议分析工具(对比tcpdump)

文章首发地址 Wireshark是一款开源的网络协议分析工具,可以捕获网络数据包并对其进行详细的分析和解释。下面是Wireshark的详细介绍: Wireshark 工作原理 Wireshark通过捕获网络接口上的数据包,将其转换为可读的格式,并在界面…

vue3实现自定义select下拉框内容之城市区域篇

分享-2023年资深前端进阶:前端登顶之巅-最全面的前端知识点梳理总结 *分享一个使用比较久的🪜 需求分析: 1、实现一个区域下拉选项与现有ui组件库不同,支持多选、单选需求 2、支持选中区域后-全选中当前区域下的所有城市信息 3、…

安卓如何卸载应用

卸载系统应用 首先需要打开手机的开发者选项,启动usb调试。 第二步需要在电脑上安装adb命令,喜欢的话还可以将它加入系统path。如果不知道怎么安装,可以从这里下载免安装版本。 第三步将手机与电脑用数据线连接,注意是数据线&a…

贝叶斯深度学习的温和介绍

一、说明 欢迎来到令人兴奋的概率编程世界!本文是对这个领域的温和介绍,你只需要对深度学习和贝叶斯统计有一个基本的了解。如果像我一样,你听说过贝叶斯深度学习,并且你猜它涉及贝叶斯统计,但你不知道它是如何使用的&…

iOS开发-处理UIControl触摸事件TrackingWithEvent

IOS BUG记录 之 处理UIControl的点击事件。 UIControl的触摸事件的方法是beginTrackingWithTouch:withEvent:,continueTrackingWithTouch:withEvent:,endTrackingWithTouch:withEvent:,cancelTrackingWithEvent: ##下面简单的介绍一下 beg…

【Express.js】集成Websocket

集成websocket 本节我们介绍在如何在 express 中集成 websocket。 WebSocket 服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送技术的一种。 准备工作 创建一个 express.js 项目&a…

LVS-DR模式集群配置

四台虚拟机 node1:128 node2:135 RS端: node3:130 node4:132 [rootnode2 ~]# yum install -y ipvsadm #配置LVS虚拟IP,没有ifconfig命令则先安装 [rootnode2 ~]# yum install net-tools -y #配置VIP [root…

GPT-4助力数据分析:提升效率与洞察力的未来关键技术 | 京东云技术团队

摘要 随着大数据时代的到来,数据分析已经成为企业和组织的核心竞争力。然而,传统的数据分析方法往往无法满足日益增长的数据分析需求的数量和复杂性。在这种背景下,ChatGPT-4作为一种先进的自然语言处理技术,为数据分析带来了革命…

Linux防火墙的配置

CentOS 要查看您的系统上的防火墙是否允许对PostgreSQL数据库的5432端口进行访问,可以按照以下步骤进行: 使用以下命令检查防火墙服务的状态: sudo systemctl status firewalld如果防火墙未运行,则说明您的系统上没有启用防火墙…

侯捷C++高级编程(下)

对于1个类要么像指针要么像函数 主题1:转换函数 转换函数 /** 1. 转换函数没有返回类型* 2. 转换函数一般需要加上const*/ class Fraction { public:Fraction(int num,int den1):m(num),n(den){cout<<"Fraction(int num,int den1): m/n "<< m/n<&…

A*算法的优化

改进OpenList开启列表 使用优先队列代替List 使用有限队列能够节约对OpenList的遍历 优先队列 using System.Collections; using System.Collections.Generic; using UnityEngine; using System;namespace YBZ.Algorithm {public class PriorityQueue<T> where T : ne…