Cesium 基本概念:创建实体和相机控制

基本概念

Entity

// 创建一个实体
const entity_1 = viewer.entities.add({position: new Cesium.Cartesian3(0, 0, 10000000),point: {pixelSize: 10,color: Cesium.Color.BLUE}
});
// 通过经纬度创建实体
const position = Cesium.Cartesian3.fromDegrees(180.0, 0.0);
// 创建一个恒星实体
let entity_2 = viewer.entities.add({name: 'entity_2',position: position,point: {pixelSize: 10,color: Cesium.Color.YELLOW,outlineColor: Cesium.Color.BLACK,outlineWidth: 2}
});
    // 创建PolylineVolume实体const positions = Cesium.Cartesian3.fromDegreesArrayHeights([0, 0, 11742000,20, 0, 11742000,40, 0., 11742000,60, 0, 11742000,80, 0., 11742000,100, 0, 11742000,120, 0., 11742000,]);const polyline = viewer.entities.add({polyline: {width: 4,positions: positions, // 路径点数组material: Cesium.Color.RED.withAlpha(0.5) // 设置半透明的红色材质}});

Cesium.Cartesian3代表固连在地球上的笛卡尔坐标系(大地坐标系)上的点。
大地坐标系x轴正方向为从地心指向经纬度(0,0)点方向,y轴从地心指向(90,0)方向,z轴从地心指向(0,90)方向。
Cesium提供(经度,纬度,高度)转大地坐标的方法Cesium.Cartographic.fromCartesian,和大地坐标转经纬高坐标的方法Cesium.Cartesian3.fromDegrees

DataSource

const czml = [{id: "document",name: "CZML Point",version: "1.0",clock: {"interval": "2012-03-15T10:00:00Z/2012-03-15T15:00:00Z","currentTime": "2012-03-15T10:00:00Z","multiplier": 60,"range": "LOOP_STOP","step": "SYSTEM_CLOCK_MULTIPLIER"}},{id: "point 1",name: "point",label: {fillColor: {rgba: [255, 255, 255, 255],},font: "13pt Lucida Console",horizontalOrigin: "LEFT",pixelOffset: {cartesian2: [20, 0],},style: "FILL",text: "referencing fillColor",},position: {"interpolationAlgorithm": "LAGRANGE","interpolationDegree": 5,"referenceFrame": "INERTIAL","epoch": "2012-03-15T10:00:00Z",cartographicDegrees: [0, .0, .0, 12742000,2000, 20.0, .0, 12742000,4000, 40.0, .0, 12742000,6000, 60.0, .0, 12742000,8000, 80.0, .0, 12742000,10000, 100.0, .0, 12742000,12000, 120.0, .0, 12742000,14000, 140.0, .0, 12742000,16000, 160.0, .0, 12742000,18000, 180.0, .0, 12742000,],},point: {color: {rgba: [255, 255, 255, 255],},pixelSize: 5,},path: {"show": [{"interval": "2012-03-15T10:00:00Z/2012-03-16T10:00:00Z","boolean": true}],"width": 1,"material": {"solidColor": {"color": {"rgba": [255, 255, 255, 100]}}},"resolution": 120,leadTime: 0,trailTime: 1e10}
];
const dataSourcePromise = Cesium.CzmlDataSource.load(czml)
viewer.dataSources.add(dataSourcePromise)
dataSourcePromise.then(() => {viewer.zoomTo(dataSourcePromise)
})

czml中,第一个元素为描述信息,从第二个元素开始为实体。
其中path属性表示运动轨迹,可以通过leadTimetrailTime控制前后长度。

相机控制

采用以下方式控制相机绕地球自转
center为地心向z轴偏移1个单位的点,viewer.camera.lookAt(center, offfset)offset参数为以center为原点的局部坐标系,z轴正方向为地心到center的方向。

let distance = 50000000
let height = 10000000
let a = 0
let lastTime: number | undefined = undefined
viewer.scene.preRender.addEventListener(() => {// 抵消地球自转let currentTime = viewer.clock.currentTimelet days = currentTime.dayNumber + currentTime.secondsOfDay / 24 / 3600if (lastTime != undefined) {a += (days - lastTime) * 2 * Math.PI}lastTime = daysif (viewer.scene.mode === Cesium.SceneMode.SCENE3D) {viewer.camera.lookAt(center,new Cesium.Cartesian3(distance * Math.sin(a), distance * Math.cos(a), height))}
})

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

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

相关文章

MySQL——自连接及联表查询练习

自连接 自己的表和自己的表连接,核心:一张表拆为两张一样的表即可。 父类: categoryidcategoryName2信息技术3软件开发5美术设计 子类: pidcategoryidcategoryName34数据库28办公信息36web开发57ps技术 子类的pid 父类的cate…

计算机缺失d3dx9_43.dll的多种解决方法,哪种更推荐使用

我在使用计算机时遇到了一个问题,系统提示我丢失了d3dx9_43.dll文件。丢失d3dx9_43.dll文件通常是由于DirectX组件未正确安装或损坏所致,这直接影响到依赖于DirectX的游戏和应用的运行。经过一番搜索和尝试,我找到了多种修复这个问题的方法&a…

2024最新SCI期刊影响因子发布(JCR2023)(含Top100榜单)

Clarivate Analytics(科睿唯安)2024年度《期刊引证报告》(Journal Citation Reports,简称JCR)发布了SCI期刊2023年影响因子(IF)。该指数备受访问学者、联培博士及博士后研究者关注。今天知识人网小编就简要介绍最新SCI…

【STM32 RTC实时时钟如何配置!超详细的解析和超简单的配置,附上寄存器操作】

STM32 里面RTC模块和时钟配置系统(RCC_BDCR寄存器)处于后备区域,即在系统复位或从待机模式唤醒后,RTC的设置和时间维持不变。因为系统对后备寄存器和RTC相关寄存器有写保护,所以如果想要对后备寄存器和RTC进行访问,则需要通过操作…

一文详解:什么是企业邮箱?最全百科

什么是企业邮箱?企业邮箱即绑定企业自有域名作为邮箱后缀的邮箱,是企业用于内部成员沟通和客户沟通的邮箱系统。 一、企业邮箱概念拆解 1.什么是企业邮箱? 企业邮箱即使用企业域名作为后缀的邮箱系统。它不仅提供专业的电子邮件收发功能&a…

【学习】使用PyTorch训练与评估自己的ResNet网络教程

参考:保姆级使用PyTorch训练与评估自己的ResNet网络教程_训练自己的图像分类网络resnet101 pytorch-CSDN博客 项目地址:GitHub - Fafa-DL/Awesome-Backbones: Integrate deep learning models for image classification | Backbone learning/comparison…

PyScada(四)构建用户 HMI

构建用户 HMI(前端)的简短说明 在后端HMI部分: 图表,添加新图表页面,添加页面Widget,添加一个 Widget,在 Page 下选择您在 2 中添加的页面,并在Content下选择1 中的图表。小部件控…

【M1/M2】详细说明Parallels Desktop虚拟机的安装使用

希望文章能给到你启发和灵感~ 如果觉得有帮助的话,点赞+关注+收藏支持一下博主哦~ 阅读指南 开篇说明什么是Paralles Desktop一、基础环境说明1.1 硬件环境1.2 软件环境二、安装Parallels DeskTop2.1 下载软件安装包三、Parallels 下配置Windows 11 系统3.1 Windows 11安装3…

PostgreSQL 简介与基础(一)

1. 什么是 PostgreSQL 1.1 概述 PostgreSQL(常简称为Postgres)是一种功能强大的开源关系型数据库管理系统(RDBMS)。它以其可靠性、强大的功能和符合标准的特性著称。PostgreSQL 支持大部分 SQL 标准,并且具有许多现代…

护网面试内容

1.自我介绍 2.如何判断是不是误判 分析请求、响应内容,判断是否攻击成功首先看告警事件名称判断是网络攻击事件还是web攻击事件,网络攻击事件:定位五元组信息(源IP、目的IP、源端口、目的端口、协议),对整…

Docker系列之安全

Docker的安全前言一、Docker 容器与虚拟机的区别 1. 隔离与共享 2. 性能与损耗二、Docker 存在的安全问题 1.Docker 自身漏洞 2.Docker 源码问题三、 Docker 架构缺陷与安全机制 1. 容器之间的局域网攻击 2. DDoS 攻击耗尽资源 3. 有漏…

Vue_cli搭建过程项目创建

概述 vue-cli 官方提供的一个脚手架,用于快速生成一个 vue 的项目模板;预先定义 好的目录结构及基础代码,就好比咱们在创建 Maven 项目时可以选择创建一个 骨架项目,这个骨架项目就是脚手架,我们的开发更加的快速&am…

uni-app的showModal提示框,进行删除的二次确认,可自定义确定或取消操作

实现效果: 此处为删除的二次确认示例,点击删除按钮时出现该提示,该提示写在js script中。 实现方式: 通过uni.showModal进行提示,success为确认状态下的操作自定义,此处调用后端接口进行了删除操作&#…

【Android】App设置开机自启动之后但是无效的原因之一

问题描述 通过监听开机广播,然后启动App,但是在系统开机之后,App并没有启动。 问题原因 当一个App在安装之后,必须要先启动一次,然后这个开机启动的功能才可以正常使用。 但是由于我的这个App是一个服务类的App&am…

如何成为专业的 .NET 开发人员

如今,网上有大量信息,找到正确的信息并非易事。当你开始编程之旅并希望获得全面的指南时,最好寻找一个可以指导你完成整个过程的指南。 本文将帮助您制定一份路线图,告诉您什么是重要的以及什么是需要学习的. 一.一切从软件基础…

【JavaScript】BOM编程

目录 一、BOM编程是什么 二、window对象的常用方法 1、弹窗API方法 2、计时器任务方法 三、window对象的属性对象常用方法 1、history网页浏览历史 2、location地址栏 3、数据存储属性对象 4、console控制台 一、BOM编程是什么 当我们使用浏览器打开一个网页窗口时,…

Volatility 内存取证【信安比赛快速入门】

一、练习基本命令使用 1、获取镜像信息 ./volatility -f Challenge.raw imageinfo 一般取第一个就可以了 2、查看用户 ./volatility -f Challenge.raw --profileWin7SP1x64 printkey -K "SAM\Domains\Account\Users\Names" 3、获取主机名 ./volatility -f Challenge…

探索QCS6490目标检测AI应用开发(二):摄像头视频的拉取和解码

作为《探索QCS6490目标检测AI应用开发》文章,紧接上一期,我们介绍如何在应用程序中拉取视频流,并且用硬件解码,得到逐帧的图像画面。我们使用了高通的Intelligent Multimedia SDK(IM SDK)完成视频的拉流和硬…

Linux杀僵尸进程

ps -A -o stat,ppid,pid,cmd | grep -e ^[Zz] | awk {print $2}1、查看系统是否有僵尸进程 使用Top命令查找,当zombie前的数量不为0时,即系统内存在相应数量的僵尸进程。 2、定位僵尸进程 使用命令 ps -A -ostat,ppid,pid,cmd |grep -e [Zz]定位僵尸…

Kafka入门-分区及压缩

一、生产者消息分区 Kafka的消息组织方式实际上是三级结构:主题-分区-消息。主题下的每条消息只会保存在某一个分区中,而不会在多个分区中被保存多份。 分区的作用就是提供负载均衡的能力,或者说对数据进行分区的主要原因,就是为…