最新要闻
- 怎么登录新浪微博网页版_如何登陆新浪微博
- 环球快报:刹车变硬踩不动遭车主集体投诉 铃木召回超7.8万辆汽车
- 【独家】好利来创始人之子回应开劳斯莱斯摆摊:没想博眼球
- 天天快播:AI小姐姐比真人还好看? N卡又抓到风口:8GB显存稳定绘图 首选RTX30/40系
- 春丽今天55岁了!网友:Coser我永远只服成龙大哥
- 荣耀“青海湖技术”揭晓:荣耀Magic5系列全球首发硅碳负极技术
- 国内专属!新款国产特斯拉Model Y升级悬架:终于不颠了
- 天天热门:功耗开放470W!影驰名人堂RTX 4080真是生猛
- 每日热讯!又一游戏成功“入奥”:育碧《舞力全开》入选2023年奥林匹克电子竞技项目
- 天天头条:女子幼儿园收童子尿煮鸡蛋 吃着香是浙江当地非遗:网友直呼酸爽
- 今日热闻!中国通才教育:已针对首次公开发售相关指控开展独立调查,将继续停牌
- 加点广告怎么了 爱奇艺新专利可在弹幕中显示广告
- 环球动态:狂飙8000MHz!朗科Z RGB DDR5-8000 16GB电镀银内存图赏
- 每日短讯:1:1复刻仿生人手 现实版《西部世界》公司众筹开启
- 全球头条:5G是高铁 6G就是飞机!工信部:全面推进6G技术研发
- 焦点热文:公司丢货要求全体员工均摊1万赔款:新员工拒赔反被怀疑偷东西
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
热点!Cesium Transform(二十)
cesium是一个用于创建3D地球和空间场景的JavaScript库,它提供了一些用于坐标变换的类,统称为transform。transform类可以帮助我们在不同的参考系之间转换点或向量,例如从地球固定系到国际天文参考系,或者从WGS84坐标系到窗口坐标系。transform类还可以根据给定的位置和方向创建一个变换矩阵,例如从东北上到地球固定系,或者从局部坐标系到世界坐标系。
cesium中最常用的transform类有以下几个:
(相关资料图)
- Transforms.computeFixedToIcrfMatrix(date, result):计算一个旋转矩阵,将一个点或向量从地球固定系(ITRF)变换到国际天文参考系(GCRF/ICRF)惯性系。- Transforms.eastNorthUpToFixedFrame(origin, ellipsoid, result):根据给定的原点和椭球体创建一个变换矩阵,将一个点或向量从东北上(ENU)局部坐标系变换到地球固定系。- Transforms.localFrameToFixedFrameGenerator(firstAxis, secondAxis):返回一个函数,该函数根据给定的位置和方向创建一个变换矩阵,将一个点或向量从局部坐标系变换到地球固定系。- Transforms.headingPitchRollToFixedFrame(origin, headingPitchRoll, ellipsoid, fixedFrameTransform, result):根据给定的原点、航偏俯角(HPR)和椭球体创建一个变换矩阵,将一个点或向量从HPR局部坐标系变换到地球固定系。
cesium还提供了一些用于在场景中转换位置的类:
- SceneTransforms.wgs84ToWindowCoordinates(scene, position, result):将WGS84坐标系中的位置转换为窗口坐标系中的位置。这通常用于将HTML元素放置在场景中某个对象的相同屏幕位置。- SceneTransforms.wgs84ToDrawingBufferCoordinates(scene, position, result):将WGS84坐标系中的位置转换为绘图缓冲区坐标系中的位置。这通常用于在WebGL上下文中绘制与场景中某个对象对齐的图形。
除了上述类之外,cesium还有一些其他与模型、相机、投影等相关的transform类。可以在cesium文档中查看更多信息。
- Transforms.computeFixedToIcrfMatrix(date, result):这个方法接受一个日期参数和一个可选的结果参数,返回一个3x3的旋转矩阵,将一个点或向量从地球固定系(ITRF)变换到国际天文参考系(GCRF/ICRF)惯性系。这个方法可以用于将地球上的位置转换为太阳系中的位置。例如,如果你想知道现在地球上某个点在太阳系中的位置,你可以这样做¹:
// Get the position of a point on Earth in ITRF coordinatesvar cartographic = Cesium.Cartographic.fromDegrees(-75.59777, 40.03883);var pointInFixed = Cesium.Cartesian3.fromRadians(cartographic.longitude, cartographic.latitude);// Transform point to the ICRF axesvar now = Cesium.JulianDate.now();var fixedToIcrf = Cesium.Transforms.computeFixedToIcrfMatrix(now);var pointInInertial = new Cesium.Cartesian3();Cesium.Matrix3.multiplyByVector(fixedToIcrf, pointInFixed, pointInInertial);
- Transforms.eastNorthUpToFixedFrame(origin, ellipsoid, result):这个方法接受一个原点参数、一个椭球体参数和一个可选的结果参数,返回一个4x4的变换矩阵,将一个点或向量从东北上(ENU)局部坐标系变换到地球固定系。这个方法可以用于创建以某个位置为中心的局部参考系。例如,如果你想在地图上添加一个以某个位置为中心的方向指示器,你可以这样做¹:
// Get the transform from local east-north-up at cartographic (0.0, 0.0) to Earth"s fixed frame.const center = Cesium.Cartesian3.fromDegrees(0.0, 0.0);const transform = Cesium.Transforms.eastNorthUpToFixedFrame(center);// Create a primitive that uses this transformconst scene = viewer.scene;const primitive = scene.primitives.add(new Cesium.Primitive({geometryInstances: new Cesium.GeometryInstance({geometry: new Cesium.SimplePolylineGeometry({positions: [new Cesium.Cartesian3(0.0, 0.0, 0.0), new Cesium.Cartesian3(10000000.0, 0.0, 0.0)],colors: [Cesium.Color.RED.withAlpha(1), Cesium.Color.RED.withAlpha(1)],followSurface: false,}),modelMatrix: transform,}),appearance: new Cesium.PolylineColorAppearance(),}));
- Transforms.localFrameToFixedFrameGenerator(firstAxis, secondAxis):这个方法接受两个轴参数(X、Y或Z),返回一个函数,该函数根据给定的位置和方向创建一个变换矩阵,将一个点或向量从局部坐标系变换到地球固定系。这个方法可以用于创建不同类型的局部参考系。例如,如果你想创建以北为第一轴、东为第二轴、上为第三轴(NEU)的局部参考系,你可以这样做:
// Create a local reference frame based on north-east-up axes at cartographic (11.34 degrees east longitude,// 46 degrees north latitude).const originCartographic = new Cesium.Cartographic(Cesium.Math.toRadians(11.34), Math.toRadians(46));const originCartesian = viewer.scene.globe.
- BoundingSphere.fromTransformation(transformation, result):这个方法接受一个变换矩阵参数和一个可选的结果参数,返回一个紧密包围给定变换矩阵的包围球。这个方法可以用于计算变换后的几何体或模型的包围球。例如,如果你想计算一个模型在地球上某个位置旋转后的包围球,你可以这样做²:
// Load a modelvar model = scene.primitives.add(Cesium.Model.fromGltf({url : "model.gltf",}));// Get the model"s bounding spherevar boundingSphere = model.boundingSphere;// Create a transform matrix that rotates the model by 45 degrees around the z-axis at a certain position on Earthvar position = Cesium.Cartesian3.fromDegrees(-75.59777, 40.03883);var heading = Cesium.Math.toRadians(45.0);var pitch = 0;var roll = 0;var hpr = new Cesium.HeadingPitchRoll(heading, pitch, roll);var orientation = Cesium.Transforms.headingPitchRollQuaternion(position, hpr);var transform = Cesium.Matrix4.fromTranslationQuaternionRotationScale(position, orientation, new Cesium.Cartesian3(1.0, 1.0, 1.0));// Compute the transformed bounding spherevar transformedBoundingSphere = Cesium.BoundingSphere.fromTransformation(transform, boundingSphere);
- TransformEditor(options):这是一个工具类,用于编辑对象(如模型、实体、图元等)的变换(位置、方向、缩放)。它接受一个选项对象参数,该参数可以指定要编辑的对象、场景、容器元素等属性。这个工具类可以用于交互式地调整对象在场景中的显示效果。例如,如果你想在场景中添加一个模型,并使用TransformEditor来编辑它,你可以这样做³:
// Create a sceneconst viewer = new Cesium.Viewer("cesiumContainer");// Add a model to the sceneconst modelEntity = viewer.entities.add({name: "model",position: Cesium.Cartesian3.fromDegrees(-123.0744619, 44.0503706),orientation: Cesium.Transforms.headingPitchRollQuaternion(Cesium.Cartesian3.fromDegrees(-123.0744619, 44.0503706),new Cesium.HeadingPitchRoll(Cesium.Math.toRadians(135), 0, 0)),model: {uri: "model.gltf",minimumPixelSize: 128,maximumScale: 20000,},});// Create a TransformEditor instance and pass in the entity to editconst transformEditor = new Cesium.TransformEditor({entity: modelEntity,});
- Model(modelOptions):这是一个表示三维模型(如glTF格式)的类,它接受一个模型选项对象参数,该参数可以指定模型的URL、位置、方向、缩放等属性。它还有一些方法和属性来控制模型的动画、着色器、材质等效果。这个类可以用于在场景中渲染复杂和精细的三维物体。例如,如果你想在场景中添加一个飞机模型,并让它沿着一条路径飞行,你可以这样做⁴:
// Create a sceneconst viewer = new Cesium.Viewer("cesiumContainer");// Create a path for the airplane to followconst start = Cesium.JulianDate.fromDate(new Date(2015, 2, 25));const
- Transforms.computeFixedToIcrfMatrix(date, result):这个方法接受一个日期参数和一个可选的结果参数,返回一个从地球固定坐标系到国际天文参考系(ICRF)坐标系的变换矩阵。这个方法可以用于将地球上的位置转换为太阳系中的位置。例如,如果你想计算2020年1月1日午夜时刻,在纬度0度经度0度处的位置在太阳系中的坐标,你可以这样做¹:
// Create a date objectvar date = new Cesium.JulianDate.fromDate(new Date(2020, 0, 1));// Get the position on Earth in Cartesian coordinatesvar positionOnEarth = Cesium.Cartesian3.fromDegrees(0.0, 0.0);// Get the transform matrix from Earth fixed frame to ICRF framevar transform = Cesium.Transforms.computeFixedToIcrfMatrix(date);// Apply the transform to get the position in ICRF framevar positionInSpace = Cesium.Matrix3.multiplyByVector(transform, positionOnEarth);
- Transforms.eastNorthUpToFixedFrame(origin, ellipsoid, result):这个方法接受一个原点参数、一个可选的椭球参数和一个可选的结果参数,返回一个从东北上(ENU)局部坐标系到地球固定坐标系的变换矩阵。这个方法可以用于创建一个以给定点为原点、以东方为x轴、以北方为y轴、以垂直方向为z轴的局部参考系。例如,如果你想创建一个以纽约市为原点的局部参考系,并在其中添加一些图形元素,你可以这样做¹:
// Create a sceneconst viewer = new Cesium.Viewer("cesiumContainer");// Get the position of New York City in Cartesian coordinatesvar origin = Cesium.Cartesian3.fromDegrees(-74.01881302800248, 40.69114333714821);// Get the transform matrix from ENU frame to Earth fixed framevar transform = Cesium.Transforms.eastNorthUpToFixedFrame(origin);// Add a red sphere of radius 5 meters at the origin of the local frameviewer.entities.add({name: "Red sphere",position: new Cesium.ConstantPositionProperty(origin),ellipsoid: {radii: new Cesium.Cartesian3(5.0, 5.0, 5.0),material: Cesium.Color.RED,},});// Add a blue box of dimensions 10 x 10 x 10 meters along the x-axis of the local frameviewer.entities.add({name: "Blue box",position: new Cesium.ConstantPositionProperty(Cesium.Matrix4.multiplyByPoint(transform, new Cesium.Cartesian3(10.0, 0.0, 0.0))),box: {dimensions: new Cesium.Cartesian3(10.0, 10.0,
热点!Cesium Transform(二十)
世界速讯:第124篇: 期约Promise
怎么登录新浪微博网页版_如何登陆新浪微博
环球快报:刹车变硬踩不动遭车主集体投诉 铃木召回超7.8万辆汽车
【独家】好利来创始人之子回应开劳斯莱斯摆摊:没想博眼球
天天快播:AI小姐姐比真人还好看? N卡又抓到风口:8GB显存稳定绘图 首选RTX30/40系
春丽今天55岁了!网友:Coser我永远只服成龙大哥
速讯:URLDNS链分析
认识数据标签
每日速递:Python识别图形验证码实战项目
全球播报:记一次CPU占用持续上升问题排查(Nacos动态路由引起)
iOS应用发布ITMS-90704错误解决
荣耀“青海湖技术”揭晓:荣耀Magic5系列全球首发硅碳负极技术
国内专属!新款国产特斯拉Model Y升级悬架:终于不颠了
天天热门:功耗开放470W!影驰名人堂RTX 4080真是生猛
每日热讯!又一游戏成功“入奥”:育碧《舞力全开》入选2023年奥林匹克电子竞技项目
天天头条:女子幼儿园收童子尿煮鸡蛋 吃着香是浙江当地非遗:网友直呼酸爽
今日热闻!中国通才教育:已针对首次公开发售相关指控开展独立调查,将继续停牌
全球百事通!为什么95%的Java程序员人,都是用不好Synchronized?
每日时讯!Python教程:类的派生
你有“ChatGPT综合征”吗:想搞钱,或是失业焦虑?
Python教程:类的继承,什么是继承
加点广告怎么了 爱奇艺新专利可在弹幕中显示广告
环球动态:狂飙8000MHz!朗科Z RGB DDR5-8000 16GB电镀银内存图赏
每日短讯:1:1复刻仿生人手 现实版《西部世界》公司众筹开启
全球头条:5G是高铁 6G就是飞机!工信部:全面推进6G技术研发
焦点热文:公司丢货要求全体员工均摊1万赔款:新员工拒赔反被怀疑偷东西
天天观察:如何在Ubuntu上安装Nextcloud(适用于树莓派上的Ubuntu)
每日播报!Pod 进阶
每日快看:Zabbix“专家坐诊”第183期问答汇总
Spring中Bean的加载方式~
什么是Markdown
当前报道:纬德信息(688171)3月1日主力资金净买入105.72万元
旅俄大熊猫画风突变体重狂飙40公斤:摸爬滚打样样精通
百事通!特斯拉Model 2被曝成本大降37% 比丰田卡罗拉还低
世界短讯!打赢了!科比坠机照片泄露案其遗孀获赔2885万美元
天天热头条丨惊险一幕:女子用火车站自动扶梯运行李 把下面男子砸骨折
【全球速看料】玩游戏需自备爆米花:《最终幻想16》主线过场动画超11小时
当前快看:1000亿数据、30W级qps如何架构?来一个天花板案例
3-Eureka注册中心
天天精选!【验证码逆向专栏】某验三代、四代一键通过模式逆向分析
当前信息:索泰RTX 4090月白深度测试:真孤独求败!A卡没得玩了
网友晒视频广州一特斯拉在停车场连撞多车 司机下车就跑:又踩错了吗
当前看点!设计时速100公里!上海苏州互通地铁今起试跑:苏州坐地铁直达
环球资讯:韦达定理
全球播报:轻松玩转Makefile | 基础用法
医院拍CT有位患者叫熊猫 结果竟是真熊猫:网友祝福“国宝”尽快好起来
丰田拆完一辆特斯拉Model Y后被震撼了 高管惊叹:我们远远落后
全球新动态:火爆全网的AI小姐姐模型重新上线 作者:画什么图后果自负
【全球热闻】大厂年薪30万95后女生转行卖快餐:直言脱离公司KPI太快乐了
当前观察:《暗黑破坏神4》玩家打怪时 不会出现天量伤害数值
世界今热点:通用电梯:目前产能在满足履行轨道交通项目合同需求的同时,不会影响公司履行其他客户订单或新接订单的生产需求
环球报道:电脑病毒的介绍与防护_电脑病毒与防护介绍
天天日报丨浅析大促备战过程中出现的fullGc,我们能做什么?
ChunJun 1.16 Release版本即将发布,bug 捉虫活动邀您参与!
一款超级给力的弱网测试神器—Qnet(附视频)
焦点要闻:Vue,小程序开发技术详解
环球即时看!关于React-Router6 (React 路由)
每日简讯:取代马斯克:新CEO接班人浮出水面
健身网红大容量运动杯:富光1.6L顿顿桶29元发车
每日热门:马力超百匹!春风NK800双缸街车发布:46890元起
热资讯!连续三年发现大油田 渤海又出亿吨级油田:1万辆车能跑30年
粽子米泡几个小时最佳?粽子米怎么调料?
职内是什么意思?职内的职能是什么?
天天快消息!【Spring基础补充】 注解补充(二)
塑料花盆能用几年?塑料花盆和陶瓷花盆哪个养花好?
url是什么意思?url地址如何获取?
COSPLAY图赏:俄妹COS《原神》八重神子 光腿狐狸媚眼如丝
《最终幻想16》PC版稳了:将于PS5版发售后开发
2299元 小米柔风空调1.5匹开启众筹:再不怕吹空调着凉了
夜空中“最亮”的两颗星星即将“浪漫相拥”:肉眼可见
世界热资讯!一夜3次地震 全球进入地震活跃期?专家回应:其实地震一直很多
江映蓉是哪一届的超女?江映蓉那届超女前十名都有谁?
榨汁机品牌排行榜前十名有哪些?榨汁机榨果汁食谱大全
chkdsk工具访问被拒绝怎么办?chkdsk工具怎么运行?
桌面的图标有阴影怎么去掉?桌面图标怎么设置随意摆放?
windows资源管理器已停止工作是怎么回事?windows资源管理器已停止工作怎么办?
输入法哪个好用?输入法被禁用如何恢复?
2023中南大学地球科学与信息物理学院科研助理招聘(非编制)
java反射机制
世界讯息:HTML+JSP+CSS实现表格布局的例子
环球头条:周鸿祎:打造中国版ChatGPT难度比研发光刻机低很多
快看点丨中国打造全球首艘大容量电池混合动力客滚船:能充8800度电
全球最大3D内容生态!努比亚推出首款裸眼3D平板nubia Pad 3D
视讯!爽脆有嚼劲/便携小包装 鱼泉榨菜7.9元 1.2斤大促
环球新消息丨魅族20系列首发Flyme 10无界生态系统 支持全链路防诈技术
推荐系统[四]:精排-详解排序算法LTR (Learning to Rank)_ poitwise, pairwise, listwise相关评价指标,超详细知
全球热资讯!使用unplugin-auto-import自动导入插件优化vite开发vue3应用
全球视讯!移动计算入门教程_编程入门自学教程_菜鸟教程-免费教程分享
【快播报】李瑞峰回答长城:我们究竟遇到了什么问题
12.98万起 新款长城欧拉好猫上市:小姐姐最爱
世界百事通!马斯克做出重大决定:特斯拉车主可能要难受了
代表建议春节假期至9天:取消调休制度 法定3天变5天
贵州一公司设立“临时哭泣点”引热议:you cry I cry no bb
焦点快看:早安!出行气象来了(2023年3月1日)
当前短讯!读Java性能权威指南(第2版)笔记05_数据库性能JDBC
korean doll likeness模型|Japanese-doll-likeness模型获取及使用
天天微速讯:一招搞定孩子不吃饭问题
实时焦点:python通过轮子安装第三方库(以Wordcloud为例)
全球动态:能否破40亿?《流浪地球2》成2月票房冠军 力压《满江红》