当前位置: 首页 > news >正文

中国源码网游戏开服衡阳网站优化方案

中国源码网游戏开服,衡阳网站优化方案,机场建设相关网站,内蒙古建设安全监督站的网站前言 在Cesium的学习中,学会读文档十分重要!!!在这里附上Cesium中英文文档1.117。 在Cesium中,一共有四种比较重要的坐标系,分别是地理坐标系,地心地固坐标系,东-北-上局部坐标系和屏…

前言

        在Cesium的学习中,学会读文档十分重要!!!在这里附上Cesium中英文文档1.117。

        在Cesium中,一共有四种比较重要的坐标系,分别是地理坐标系,地心地固坐标系,东-北-上局部坐标系和屏幕坐标系,接下来我们一一学习一下他们的特点。

一、WGS84 坐标系(地理坐标系)

1.1、坐标系介绍

        地理坐标系(Geographic Coordinate System),是使用三维球面来定义地球表面位置,以实现通过经纬度对地球表面点位引用的坐标系。一个地理坐标系包括角度测量单位、本初子午线和参考椭球体三部分。地理坐标系依据其所选用的本初子午线、参考椭球的不同而略有区别。

        在cesium中,采用的参考椭球为WGS84。

定义​

  • ​格式​​:[经度,纬度,高度]
    • ​经度​​(Longitude):-180° 到 180°,东经为正。
    • ​纬度​​(Latitude):-90° 到 90°,北纬为正。
    • ​高度​​(Height):椭球体高度(米),基于 WGS84 椭球面。
  • ​核心用途​​:人类可读的地理位置输入(如 GPS 坐标、地图标记)。

1.2、角度与弧度的转换

        在Cesium里,经纬度分角度经纬度和弧度经纬度,他们有不同的应用范围。

        弧度地理坐标还有一个类叫Cartographic。

        弧度转角度可以通过数学函数来实现。

degreeLongitude=Cesium.Math.toDegrees(radianLongitude);
degreeLatitude=Cesium.Math.toDegrees(radianLatitude);

        角度转弧度有两种方法, 一种是数学函数,一种是Cartographic的静态函数。

        数学函数

const radianLongitude=Cesium.Math.toDegrees(degreeLongitude);
const radianLatitude=Cesium.Math.toDegrees(degreeLatitude);

        Cartographic.fromDegrees 函数

const cartographic=Cesium.Cartographic.fromDegrees(degreeLongitude, degreeLatitude, height)

1.3、注意事项

    WGS84 高度是相对于椭球面的,如需获取真实地面高度,需使用地形数据。

const sampledHeight = viewer.scene.globe.getHeight(new Cesium.Cartographic.fromDegrees(116.39, 39.9)
); // 可能返回 undefined(无地形数据)

 

二、地心地固坐标系(ECEF)

2.1、坐标系介绍

        地理坐标系由于三个坐标量是经纬度和高度,并不利于数学计算,因此,在Cesium,用笛卡尔三维坐标来进行计算,但是三个坐标轴该如何选取呢?

        地心地固坐标系(Earth-Centered, Earth-Fixed,简称ECEF)简称地心坐标系,是一种以地心为原点的地固坐标系(也称地球坐标系),是一种笛卡儿坐标系。原点 O (0,0,0)为地球质心,z 轴与地轴平行指向北极点,x 轴指向本初子午线与赤道的交点,y 轴垂直于xOz平面(即东经90度与赤道的交点)构成右手坐标系。

        这种坐标系刚好符合满足计算要求,因此Cesium的笛卡尔三维坐标采用地心地固坐标系

定义​

  • ​原点​​:地球质心。
  • ​轴方向​​:
    • ​X 轴​​:赤道与本初子午线(0° 经度)的交点。
    • ​Z 轴​​:地球自转轴(指向北极)。
    • ​Y 轴​​:与 X、Z 轴构成右手坐标系(东经 90° 方向)。
  • ​核心用途​​:卫星轨道计算、精确弹道模拟、全球空间分析。

图片来源百度百科

                                                                图片来源百度百科

2.2、坐标转换

2.2.1、经纬度转笛卡尔坐标(ECEF)

        经纬度转地心地固坐标可以通过fromRadians和fromDegrees函数,这两个函数分别把弧度地理坐标和角度地理坐标转成地心地固坐标。

 2.2.2、地心地固坐标转经纬度

        地心地固坐标无法直接转角度经纬度,但是可以直接转弧度经纬度。因此如果要角度经纬度,我们还需要通过数学函数进行转换。

const cartographic = Cesium.Cartographic.fromCartesian(ecefPosition);
//转角度
const lon = Cesium.Math.toDegrees(cartographic.longitude);
const lat = Cesium.Math.toDegrees(cartographic.latitude);
const height = cartographic.height; // 椭球高度,非地面实际高度!

三、东-北-上局部坐标系(ENU)

3.1、坐标介绍

        在Cesium中,东-北-上局部坐标系一般用于控制模型的姿态(后面文章再介绍)。

        定义​

  • ​原点​​:用户定义的参考点(如某个经纬度位置)。
  • ​轴方向​​:
    • ​East (X)​​:局部东方向。
    • ​North (Y)​​:局部北方向。
    • ​Up (Z)​​:垂直于椭球面向上(非垂直地面!)。

3.2、地心地固坐标转局部坐标

        地心地固坐标可以直接转局部坐标矩阵,但是不能直接转经纬度。

 

四、屏幕坐标系

4.1、坐标介绍

定义​

  • ​原点​​:画布左上角 (0, 0),右下角为 (width, height)(像素单位)。
  • ​核心用途​​:处理鼠标点击、屏幕叠加元素(如 HUD 文字)。

4.2、获取屏幕坐标

        屏幕坐标一般和鼠标事件在一起处理,通过ScreenSpaceEventHandler类里的setInputAction函数取得,该函数第一个参数为一个回调函数,我们可以通过这个来获取屏幕的坐标。

let drawHandler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);
drawHandler.setInputAction((e) => { // 监听鼠标左键点击事件const p = e.position;//屏幕坐标}, Cesium.ScreenSpaceEventType.LEFT_CLICK);

4.3、屏幕坐标转地心地固坐标

        将屏幕坐标转地球坐标我们可以通过scene对象的pickPosition函数来进行转换。

let drawHandler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);
drawHandler.setInputAction((e) => { // 监听鼠标左键点击事件const p = scene.pickPosition(e.position);//地心地固坐标}, Cesium.ScreenSpaceEventType.LEFT_CLICK);

4.4、地心地固坐标转屏幕坐标

        地心地固坐标转屏幕坐标可以通过wgs84ToWindowCoordinates函数来完成。

const screenPosition = Cesium.SceneTransforms.wgs84ToWindowCoordinates(viewer.scene,globalPosition
);

 五、3D 空间中的数学工具

        除了坐标系外,cesium里还有一些和坐标系计算相关的内容,有了他们,我们可以对模型坐标进行平移旋转等数学计算。

5.1、四元数

定义​

​特性​

  • ​用途​​:表示 3D 旋转,避免万向节锁问题,且计算效率高。
  • ​结构​​:包含 4 个分量 [x, y, z, w],通常表示绕某个轴的旋转。
  • ​公式​​:
    q=[x,y,z,w]=cos(θ/2)+(i⋅x+j⋅y+k⋅z)sin(θ/2)
    其中,θ 是旋转角度,(x,y,z) 是旋转轴。
  • ​紧凑性​​:仅需 4 个数值,内存占用小于矩阵。
  • ​插值平滑​​:适合球面线性插值(SLERP),用于动画过渡。
  • ​归一化​​:四元数必须归一化(长度为 1)才能正确表示旋转。

         比如,绕y轴转90度。

// 创建四元数(绕 Y 轴旋转 90 度)
const axis = new Cesium.Cartesian3(0, 1, 0); // Y 轴
const angle = Cesium.Math.toRadians(90); // 弧度
const quaternion = Cesium.Quaternion.fromAxisAngle(axis, angle);// 应用四元数到实体方向
entity.orientation = quaternion;

5.2、方向矩阵(Matrix3 和 Matrix4)

        方向矩阵​​中Matrix3表示旋转, Matrix4表示旋转 + 平移。

 5.3、Cartesian4

Cartesian4表示 4D 向量,常用于齐次坐标或矩阵运算。

  • ​结构​​:[x, y, z, w],其中:
    • x, y, z:空间坐标或方向分量。
    • w:齐次坐标的缩放因子(通常为 1 表示点,0 表示方向)。

       


        

        关于坐标系统及坐标转换到这里就结束了,如果大家喜欢我的文章的话,点一个免费的赞和关注吧!

http://www.dtcms.com/a/603289.html

相关文章:

  • 商品网站开发南宁做网站
  • Linux之中断子系统-中断控制器的中断函数gic_handle_irq分析(5)
  • 社交网站开发平台建工在线
  • Agentic AI TASK02 Reflection Design and Pattern
  • 撰写网站专题活动策划方案网站备案域名购买
  • 2014 吉林省赛题解 | CCUT应用OJ题解——F[X] + X = N
  • 如何做网站使用手册两个网站如何使用一个虚拟主机
  • 【云运维】Kubernetes 安装(基于Containerd+Calico)
  • 芜湖高端网站建设网站推广 济南
  • 公共部门网站建设维护网站挂黑链
  • wordpress怎么做的wifi优化大师下载
  • 免费婚庆网站模板嵌入式网站开发培训
  • 网站关键词先后开发公司安全管理组织机构图
  • 网站建设域名什么意思wordpress插件点不开
  • wordpress怎样建立多站点手机百度账号登录个人中心
  • 2025-11-12[第三大的数、将x减到0的最小操作数]
  • 基层建设刊物网站建筑工程网签备案合同
  • 强化学习基础概念与核心算法全解析
  • 解释型与编译型编程语言的区别 | 深入了解两者的工作原理与优劣
  • 人工智能网站应怎么做长春市长春网站建设哪家好
  • 建宣传网站北京营销策划公司有哪些
  • 网站系统开发毕业设计网站建设ppt百度文库
  • 2.2 前向传播与反向传播:深度学习的核心机制全解析
  • 山东省建设厅官方网站怎么样如何创建网站?
  • UrealEngine-5.2.1源码-AbilitySystemComponent.h
  • FPGA教程系列-Vivado中FIFO的简单仿真分析
  • 网站开发需要什么工具公司介绍怎么写范本
  • 网站建设责任书广东省建设厅官方网站网址
  • WebView 远程调试全指南,跨端真机调试的完整解决方案
  • wordpress企业网站 教程wordpress站点标题