Cesium中的坐标系、矩阵

Cesium 设置entity的姿态及获取entity的hpr(仰俯角、偏转角、翻滚角) 经常我们会碰到要实时设置entity的姿态,而官方的api也提供了这个参数--orientation var orientation = Cesium.Transforms.headingPitchRollQuaternion(position, new Cesium.HeadingPitchRoll(heading, pitch, roll)); 但是有时呢 我们需要反过来,比如通过orientation来计算hpr,如下: 1、由四元数计算三维旋转矩阵 var mtx3= Cesium. 阅读详情

1:cesium中支持载入3D模型,不过只支持gltf格式。gltf是khronos组织(起草OpenGL标准的那家)定义的一种交换格式,用于互联网或移动设备上展现3d内容,充分支持opengl,webgl,opengles图形加速标准。

    gltf目前可以由collada格式转换而来,官网上也提供了一个转换工具(https://www.khronos.org/gltf)。这个工具比较坑爹,只能和collada文件放在同一个目录才工作,转换后的结果文件也必须在同一目录,就是说不能指定输入和输出路径,当初坑了我好久才发现。

    一个collada文件转换后结果有4个文件,一个.bin,一个.json,两个.glsl。.json文件是描述性的文件,.bin是实际的数据,两个glsl文件是顶点着色语言文件。把这些文件所在目录部署到web服务器上。在client端添加

var ellipsoid = viewer.scene.globe.ellipsoid; var cart3 = ellipsoid.cartographicToCartesian(Cesium.Cartographic.fromDegrees(lng, lat, height)); var modelMatrix = Cesium.Transforms.eastNorthUpToFixedFrame(cart3); var quat = Cesium.Quaternion.fromAxisAngle(Cesium.Cartesian3.UNIT_Z, Cesium.Math.toRadians(rotate - 90)); var mat3 = Cesium.Matrix3.fromQuaternion(quat); var mat4 = Cesium.Matrix4.fromRotationTranslation(mat3, Cesium.Cartesian3.ZERO); var m = Cesium.Matrix4.multiplyTransformation(modelMatrix, mat4);//获得最终变换矩阵,参考笔者前面写的《坐标变换》篇 var model = viewer.scene.primitives.add(Cesium.Model.fromGltf({ url : 'http://localhost:88/gltf/tower.json',//转换后4个文件中的json文件 modelMatrix : m, //添加模型的变换矩阵,才能显示在正确位置,否则打死也找不到,被放到地球的某个角落里 scale:1.0 //缩放倍数 })); //模型加载后,如果有动画就播放

model.readyToRender.addEventListener(function(model) { // Play and loop all animations at half-spead model.activeAnimations.addAll({ speedup : 0.5, loop : Cesium.ModelAnimationLoop.REPEAT }); });

2:

 转换到笛卡尔坐标系后就能运用计算机图形学中的仿射变换知识进行空间位置变换如平移旋转缩放。cesiumjs为我们提供了很有用的变换工具类,Cesium.Cartesian3(相当于Point3D)Cesium.Matrix3(3x3矩阵,用于描述旋转变换)Cesium.Matrix4(4x4矩阵,用于描述旋转加平移变换),Cesium.Quaternion(四元数,用于描述围绕某个向量旋转一定角度的变换)。下面举个例子:

      一个局部坐标为p1(x,y,z)的点,将它的局部坐标原点放置到loc(lng,lat,alt)上,局部坐标的z轴垂直于地表,局部坐标的y轴指向正北,并围绕这个z轴旋转d度,求此时p1(x,y,z)变换成全局坐标笛卡尔坐p2(x1,y1,z1)是多少?

var rotate = Cesium.Math.toRadians(d);//转成弧度 var quat = Cesium.Quaternion.fromAxisAngle(Cesium.Cartesian3.UNIT_Z, rotate); //quat为围绕这个z轴旋转d度的四元数 var rot_mat3 = Cesium.Matrix3.fromQuaternion(quat);//rot_mat3为根据四元数求得的旋转矩阵 var v = new Cesium.Cartesian3(x, y, z);//p1的局部坐标 var m = Cesium.Matrix4.fromRotationTranslation(rot_mat3, Cesium.Cartesian3.ZERO);m2为旋转加平移的4x4变换矩阵,这里平移为(0,0,0),故填个Cesium.Cartesian3.ZERO m = Cesium.Matrix4.multiplyByTranslation(m, v);//m = m X v var cart3 = ellipsoid.cartographicToCartesian(Cesium.Cartographic.fromDegrees(lng, lat, alt)); //得到局部坐标原点的全局坐标 var m1 = Cesium.Transforms.eastNorthUpToFixedFrame(cart3);//m1为局部坐标的z轴垂直于地表,局部坐标的y轴指向正北的4x4变换矩阵 m = Cesium.Matrix4.multiplyTransformation(m, m1);//m = m X m1 var p2 = Cesium.Matrix4.getTranslation(m);//根据最终变换矩阵m得到p2 console.log('x=' + p2.x + ',y=' + p2.y + ',z=' + p2.z );

cesium 坐标系 通过上面图片标记的信息可以得到cesium坐标系是右手坐标系: 最后使用右手坐标系和第一张图标记的方位很容易推导cesium Transforms.js中坐标系定义: //由第一个X轴 第二个Y轴 得出Z轴 var vectorProductLocalFrame = { up: { south: "east", north: "west", west: "south", east: "north", }, down: { south: "west", . 阅读详情

相关推荐

cesium 计算旋转变换矩阵的底层解析

cesium 计算旋转变换矩阵的底层解析 0 前言 cesium 建立局部坐标系时用到的函数主要有: Cesium.Transforms.eastNorthUpToFixedFrame (origin, ellipsoid , result ) 该函数解释为: /** 从具有东北向上轴的参考帧计算4x4变换矩阵以提供的原点为中心,以提供的椭球的固定参考系为中心。局部轴定义为: x 轴指向当地的东部方向。 y 轴指向本地北方向。 z 轴指向穿过该位置的椭球面法线方向。 */ 除此之外,还有类似的函数接口

xinleicol的博客 4130

cesium视频教程

本课程是一套基于GIS+BIM的三维地理信息系统框架,学习本课程可以快速掌握cesiumjs开发GIS+BIM的地理信息系统,三维系统等。学习本课程可以提高对三维渲染,地理信息GIS+BIM的认识,为您的学习与开发工作节约大量宝贵的时间,快速入门,上手。   

Cesium:地心地固坐标(ECEF)转东北天坐标(ENU)

Cesium中地心地固坐标(ECEF)转东北天坐标(ENU) Cesium 中常用的坐标是以椭球中心为原点的地心地固坐标系,在地学问题中,我们常常使用的坐标系为三个坐标轴分别指向东方、北方、地表垂直向上方向的东北天坐标系。本文介绍了如何将二者进行相互转换。 Cesium中有个方法: Cesium.Transforms.eastNorthUpToFixedFrame(origin, ellipsoid, result) 官方释意为: 也就是说,这个方法的作用为:获得一个转换矩阵,这个转换矩阵是以提供的坐标

欢乐的小树的博客 4445

90 cesium的四种点击拾取方法 矩阵变换 本地坐标转世界 禁止场景/鼠标左右拖动、禁用中键 修改点击infoBox内容 3Dtile性能优化 cesium+vue

cesium的四种点击拾取方法 获取鼠标位置 等待添加

samllucky的博客 856

cesium课程第十二篇:坐标系转换与矩阵

这一篇我们深入讲解如何在这些坐标系之间自由转换,以及支撑这些变换的核心数学工具:矩阵与向量运算。掌握这些,你就能精准控制 3D 场景中任意实体的位置、朝向和姿态

God's asylum的博客 112

Cesium 地球自转 场景不转动球体转动

实现自转其实这里相机位置可以认为在惯性系里是不变的,我们只需求出每个时刻惯性到地固的转换矩阵,就能知道相机位置每时刻在地固中的变化。Cesium本身transform中有地固和惯性坐标系转换的矩阵,输入是JulianDate。(注意,该方法需要加载一些计算用到的资源,所以没加载资源前调用会返回undefined)。Cesium里由两个基本坐标系,惯性坐标系和地固坐标系。简单就是惯性系的坐标轴方向是不变的,而地固系是随地球自转而转动的。

一路走一路学,总会不落后 678

Cesium中常用的一些数学计算(矩阵、向量)用法——矩阵

Cesium.Matrix4,4x4矩阵,一般用于描述旋转加平移变换。在计算机图形学中,Cesium.Matrix3,3x3矩阵,一般用于描述旋转变换。

debbie_luo1211571826的博客 5206

[uboot] (第四章)uboot流程——uboot编译流程

uboot编译流程简单介绍

ooonebook的博客 1万+

C1——entity的坐标转换

描述:cesium或者超图里面,通常获取到的图层或对象的坐标都是世界坐标如:{x: -1590**1.9208352927, y: 53205**.575479968, z: 3137114.8998589036}。拿转换为我们常见的84 坐标(106.64**934719027,29.4625**213142,0)呢?

GIS特战兵 874

从零部署Stable Diffusion:本地环境搭建完整教程

本文专为“想自己跑Stable Diffusion但完全没经验”的新手设计,覆盖从硬件准备到生成第一张图的完整流程。不涉及复杂算法原理,但会讲清每个操作的“为什么”(比如为什么需要显卡?为什么要装CUDA?),帮你知其然更知其所以然。先检查硬件是否达标(显卡是核心!安装必要软件(操作系统、Python、CUDA)下载Stable Diffusion核心代码和模型解决常见报错,生成第一张图附赠模型库推荐和性能优化技巧显卡是核心:N卡+足够显存(至少6G)是本地部署的基础。CUDA是翻译。

AI算力网络与通信的博客 1292

AI智能体升级实战:从规则匹配到Function Call,准确率提升86%的技术选型之路

AI智能体升级实战:从规则匹配到Function Call的技术演进 文章记录了AI邮件助手从传统规则匹配升级到Function Call的技术迭代过程。通过案例分析,揭示了规则匹配的三大核心问题:覆盖不全(用户表达千变万化)、组合困难(多条件容易漏掉)、维护噩梦(每个需求都要新增规则)。测试数据显示,规则匹配在复杂查询中的准确率仅51%,严重影响用户体验。 技术团队对比了三种升级方案:1) 继续优化规则匹配(天花板明显);2) 微调专用NLP模型(成本高);3) 采用Function Call(灵活高效)

yweng18的博客 1079

Cesium球心坐标与本地坐标系经纬转换的数学原理—矩阵变换

之前整理过:《透析矩阵,由浅入深娓娓道来—高数-线性代数-矩阵》、《三维旋转笔记:欧拉角/四元数/旋转矩阵/轴角-记忆点整理》,这次转载FuckGIS的《Cesium之球心坐标与本地坐标》,算是线性代数在前端领域的的又一应用案例吧 球心坐标(ECEF)与本地坐标(NEU) 假如你来到一个陌生城市,你很可能需要问路、通常会告诉你向北走100米,右转,向东走100米,理解起来很直观。你给儿子买了一个地球仪,你从北京(39,115)转到伦敦 (51,0),这个动作就可以分解为两步:先转到同一个经度(39,0.

周陆军的博客,分享it技术。 3207

浅谈武术擂台格斗机器人大赛

武术擂台机器人赛是工科类专业的一个跨学科的竞赛项目,它涵盖了机械结构、硬件电路和计算机程序等技术领域。笔者在校期间有幸参加过四次这样的比赛,有成功也有失败,对此深有感悟。本文仅为个人观点,有说得不对的地方,望积极指出,希望能帮助到有需要的人。

weixin_43811044的博客 1万+

世界坐标系到观察坐标系的变换步骤_Cesium球心坐标与本地坐标系经纬转换的数学原理—矩阵变换...

之前整理过:《透析矩阵,由浅入深娓娓道来—高数-线性代数-矩阵》、《三维旋转笔记:欧拉角/四元数/旋转矩阵/轴角-记忆点整理》,这次转载 FuckGIS的《Cesium之球心坐标与本地坐标》,算是线性代数在前端领域的的又一应用案例吧球心坐标(ECEF)与本地坐标(NEU)假如你来到一个陌生城市,你很可能需要问路、通常会告诉你向北走100米,右转,向东走100米,理解起来很直观。你给儿子买了一个地球...

weixin_39732018的博客 767

实测|龙虾机器人(OpenClaw)Windows系统部署全攻略(含避坑指南)

先简单科普下:龙虾机器人本质是一款开源AI代理框架,核心优势是“能行动、可本地、高灵活”——它不内置大模型,需要对接第三方AI接口(如GPT、Claude、阿里云百炼等),但能将AI的指令转化为实际的系统操作,相当于给AI配了一个“能动手的身体”,这也是它和普通对话大模型的核心区别。今天就结合自己的实测经历,从环境准备、分步部署、初始化配置,到常见问题排查,写一篇保姆级攻略,不管是新手还是有一定技术基础的同学,都能跟着一步步完成部署,少走弯路~解决方案:检查聊天软件插件是否安装成功,权限是否配置完整;

wohaiweifaju的博客 1万+

告别水印!Vue3项目集成Stimulsoft.Reports.js完整配置与激活指南

本文详细介绍了如何在Vue3项目中集成Stimulsoft.Reports.js,提供从授权策略到性能优化的完整解决方案。通过模块化架构设计和现代化引入方式,帮助开发者高效实现专业级报表功能,同时避免版权风险和水印问题,特别适合中小型项目需求。

weixin_33701294的博客 431

Cesium 当前位置矩阵的获取

在 Cesium 中,获取位置矩阵是一个关键步骤,通常用于将物体从地球的经纬度坐标转换为三维场景中的位置。通过上述步骤,我们可以根据地球上的经纬度坐标生成对应的变换矩阵,并使用该矩阵进行坐标转换。Cesium 提供了强大的 API,帮助开发者轻松处理地球坐标系到世界坐标系的转换,极大地方便了 3D 地图和地理信息系统的开发。Cesium 提供了强大的 API 来处理这些坐标系之间的转换,最常用的转换方法是将经纬度转换为。,它返回的是一个 4x4 矩阵,表示从 ENU 坐标系到 ECEF 坐标系的转换。

ismartcube的博客 1294

[QMT量化交易小白入门]-104、QMT平台运行深度学习模型,预测期货价格

本专栏主要是介绍QMT的基础用法,常见函数,写策略的方法,也会分享一些量化交易的思路,大概会写100篇左右。QMT的相关资料较少,在使用过程中不断的摸索,遇到了一些问题,记录下来和大家一起沟通,共同进步。

木头大左的博客 481

cesium中的模型变换

变换的任务,是将虚拟世界中以(X,Y,Z)为坐标的物体(3D)变换到以一个个像素位置(x,y)来表示的屏幕坐标系之中(2D)。同样是从3D到2D,变换的过程和拍全家福的过程比较类似。

xyj00101的博客 487

大数据预测分析:精准把握市场趋势

传统市场预测多依赖经验判断(比如“去年卖了1000件,今年加20%”)或小数据统计(比如用近6个月的销量做线性回归)。而大数据预测分析是:利用海量结构化+非结构化数据(销售、用户、社交媒体、天气等),通过机器学习/深度学习模型,挖掘数据中的关联关系与趋势规律,实现对未来市场走势的精准预测。更全面:覆盖内部(企业数据)+外部(行业、环境数据)的全维度数据;更精准:用算法替代人工,避免主观偏差;更实时:支持分钟级/小时级的实时预测(比如直播带货的销量预测)。错误做法。

AI智能探索者的博客 1024

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Cesium中的相机—欧拉旋转

在Cesium中的相机—旋转矩阵一文中,我们给出了对于绕某个轴旋转的旋转矩阵,并给出了两种旋转方式的区别。 本文讨论连续旋转的旋转矩阵,仍然给出两种旋转的区别。 下图中,原始坐标系o−xyzo-xyzo−xyz为蓝色所示,首先绕Z轴旋转α\alphaα角度,此时X轴指向N;然后绕新的坐标系的X轴(N方向)旋转β\betaβ角度,此时将原来的Z轴旋转至红色的Z轴方向;最后再绕新的坐标系的Z轴(红色)...

遨游在太空 2772

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Cesium学习笔记——坐标系统及坐标转换

在Cesium中,一共有四种比较重要的坐标系,分别是地理坐标系,地心地固坐标系,东-北-上局部坐标系和屏幕坐标系。

mingyu_mingyu的博客 3860

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

向量、矩阵 基础知识

在Cesium经常用到矩阵变换。比如将一个物体移动、缩放、平移都可以用变换矩阵来计算。 再比如将三维场景中的物体转换为屏幕上显示的二维图形,需要用到透视投影(perspective projection)矩阵。 变换(tansformation)是一个函数,实现将一个空间坐标映射为另一个空间坐标,矩阵(matrix)是这种计算的一种方式,在三维开发中用途广泛。 一、向量 1.1、向量的基本概念 向量又称为矢量(vector),表示既有大小又有方向的量。在物理学中,力,速度,位移等都可以用向量来表示

人生不止 1万+

【Cesium】计算模型的朝向四元数,实现模型运动中调整朝向

通过矩阵变换实现模型朝向四元数的计算

Gua_guagua的博客 7239

【Cesium】Cesium中rotationMatrixFromPositionVelocity方法的理解

rotationMatrixFromPositionVelocity方法理解

Gua_guagua的博客 2018

cesium 调整3dtiles的位置 世界坐标下 相对坐标下 平移矩阵

cesium调整3dtiles的位置用到的是平移矩阵,原理是在世界坐标系中用偏移点减去原始点得到一个平移向量,再根据这个向量得到平移矩阵。

AllBluefm的专栏 2273
上一篇: 构建高性能WEB站点之 吞吐率、吞吐量、TPS、性能测试
龙之吻number7
博客等级 码龄10年 99粉丝 7原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值