3d开发所需要知道的坐标系
目前学习了mapbox, three.js, webgl, cesium的过程中,发现坐标系是一个非常重要的东西,目前我所了解到的坐标系对其进行一个总结,先粘贴上图片:
1. 屏幕坐标系(平面坐标系,笛卡尔2坐标系,像素坐标系,坐标系格式为(x, y)):
屏幕坐标系就是平面直角坐标系,我们在平面中使用的坐标,格式为x,y,在cesium中使用Cartesian2进行初始化,日常使用中的屏幕像素坐标就是平面坐标系坐标,鼠标在地图上点击位置时返回的就说一个Cartesian2笛卡尔2对象
转换方法:
屏幕坐标系转换为笛卡尔3坐标系的三种方法,均默认click.position为点击地图后返回的屏幕像素x,y坐标:
(1)//pickEllipsoid(windowPosition(像素的x,y坐标,笛卡尔2),ellipsoid(要选择的椭球),result): 获取鼠标点的对应椭球面位置(世界坐标Cartesian3)
const wordPosition = viewer.scene.camera.pickEllipsoid(click.position, viewer.scene.globe.ellipsoid)
(2)// getPickRay(windowPosition像素的x,y坐标):从相机位置通过点的像素创建一条射线
const ray = viewer.camera.getPickRay(movement.position)
pick(ray(测试相交的射线,scene(场景))):找到光线和渲染的地球表面之间的焦点
const rayPosition = viewer.scene.globe.pick(ray, viewer.scene)
(3)// pickPosition: 返回从深度缓冲区和窗口位置重建的笛卡尔位置
const pickPosition = viewer.scene.pickPosition(movement.position)
屏幕坐标系转换为弧度制的两种方法:
(1)//将笛卡尔坐标转换为84地理坐标
const cartographic = Cesium.Cartographic.fromCartesian(cartesian);
//将弧度转为度的十进制度表示
const lon = Cesium.Math.toDegrees(cartographic.longitude);
const lat = Cesium.Math.toDegrees(cartographic.latitude);
(3)//将笛卡尔坐标转换为84坐标系
const curPosition = Cesium.Ellipsoid.WGS84.cartesianToCartographic(cartographic );
const lon = curPosition.longitude * 180 / Math.PI;
const lat = curPosition.latitude * 180 / Math.PI;
2.笛卡尔空间坐标系(笛卡尔2,笛卡尔3(世界坐标系),笛卡尔4):
笛卡尔坐标系是直角坐标系和斜角坐标系的统称,我们日常开发所用主要是二维直角坐标系和三维空间坐标系
二维直角坐标系:就是上面的屏幕坐标系,Cesium.Cartesian2(x, y)
三维直角坐标系:也叫做世界坐标系,可以看作是以椭球中心为原点的空间直角坐标系中一个点的坐标, 以圆心为原点ow,xw轴水平向右,yw轴像下,zw是由右手法则确定,在three.js中也用的右手坐标系,计算机中常用到左手坐标系,左手坐标系(x向右,y向上,z向前)和右手坐标系(x向右,y向上,z向后)只是两者的Z轴相反
格式:Cesium.Cartesian3(x, y, z)
3.WGS84地理坐标系(经纬度坐标系):
WGS84坐标系是国际上采用的地心坐标系,坐标原点是地球质心,地心空间直角坐标系的Z轴指向地球级(CTP)方向,X轴指向零子午面和CTP赤道的交点,Y轴和Z,X轴构成右手坐标系,我们常使用的经纬度也是从84坐标系中取出,经度(参考椭球面上某点的大地子午面与本初子午面间的两面角,东正西负),纬度(参考椭球面上某点的法线与赤道平面的夹角。北正南负),其经纬度范围分别为[-180,180]和[-90,90]
格式:Cesium.Cartographic(longitude, latitude, height)
4.火星坐标系:
GCJ02火星坐标系是WGS84坐标系加密后的坐标系,出于国家安全考虑,国内所有导航电子地图必须使用国家测绘局制定的加密坐标系统,即将一个真实的经纬度坐标加密成一个不正确的经纬度坐标,一般我们所用到的主流地图上的坐标系都是火星坐标系
3d开发所需要知道的坐标系相关推荐
- 3D开发学习之笛卡尔坐标系
作者:朱金灿 来源:clever101的专栏 为什么大多数人学不会人工智能编程?>>> 一.2D笛卡尔坐标系的定义 2D笛卡尔坐标系具有以下特点: 1.2D笛卡尔坐标系都具有一个 ...
- XNA开发思考之3D开发中的小常识
PS:个人学习总结,转载请著明出处 在XNA的3D开发中,时常要涉及到坐标系统和摄象机的一些参数.同时还有矩阵的变化来在3维世界里的移动. 在二维世界里的坐标系统里,使用x,y坐标来表示一个点在坐标系 ...
- 世界前沿3D开发引擎HOOPS全面讲解——集3D数据读取、3D图形渲染、3D数据发布于一体的全新3D应用开发工具
无论您是想搭建桌面端.WEB端或者移动端APP应用,HOOPS Platform 组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务. ...
- 3D开发工具HOOPS最新解析合集,助力实现web端高性能模型渲染
一.3D技术为创新提供强大助力 不管您想搭建桌面.WEB或者移动端APP应用,技术领先全球的HOOPS Platform组件都可以为您提供弹性的3D集成架构,同时,一批可信任的工业领域3D技术专家也将 ...
- 《Unity 4 3D开发实战详解》一6.7 物理引擎综合案例
本节书摘来异步社区<Unity 4 3D开发实战详解>一书中的第6章,第6.7节,作者: 吴亚峰 , 杜化美 , 张月霞 , 索依娜 责编: 张涛,更多章节内容可以访问云栖社区" ...
- 【转】体验 Silverlight 5 3D开发之环境搭配篇
体验 Silverlight 5 3D开发之环境搭配篇 时间:2012-10-08 20:14来源:博客园作者:吉心 点击:180次 项目组现在要做一个三维的项目,我们几个童鞋,讨论了N久,最后决定基 ...
- [Map 3D开发实战系列] Map Resource Explorer 之四-- Map3D开发中的WPF
目录 [Map 3D开发实战系列] Map Resource Explorer 背景介绍--Kick off [Map 3D开发实战系列] Map Resource Explorer 之二-- 运行和 ...
- unity 3d开发的大型网络游戏 1
unity 3d开发的大型网络游戏 一.总结 1.unity的官网上面应该有游戏列表 2.unity3D是很好的3d游戏引擎,也支持2d,也能做很多画面精良的3A级游戏 3.范围:电脑游戏,手机游戏, ...
- 老子云SDK免费使用,实现3D开发自由
随着3D元素在日常生活的广泛应用,3D可视化也开始承载越来越多的功能,这意味着更细致的交互要求.更复杂的逻辑关系,也意味着更庞大的开发工作量. 为了减轻用户开发压力,老子云团队一直致力于3D可视化底层 ...
- 批量处理千万模型,3D开发必备接口程序!老子云新版API,正式上线!
大家千呼万唤的新版API,它终于来了!九月底上线,上线当晚调用次数就已破千,一周过万,好评如潮. 这一版API将6大3D轻量化处理接口进行统筹,同时开放了更大在线模型接口,可支持10余种格式模型上传, ...
最新文章
- visio 2010 修改 默认字体 字号大小 方法
- P1972 [SDOI2009]HH的项链(离线树状数组)
- svn更改用户名方法:
- 斯坦福2018 AI指数报告出炉:DL职位需求两年增长35倍
- linux禁止切换到root,linux禁止普通用户切换至root用户的实例讲解
- java访问mongodb_Java中获取MongoDB连接的方法详解
- 计算机软件时间,时间校对软件
- C2000浮点运算注意事项——CPU和CLA的差异及误差处理技巧
- 网页中使用iconfont图标
- 版本管理工具-SourceSafe
- 软件测试输入准则,单元测试准则
- 【二次分配问题】基于遗传算法 (GA)、粒子群优化 (PSO) 和萤火虫算法 (FA) 求解二次分配( QAP)问题(MATLAB 实现)
- 牛客 小米校招 计算题 单调栈 接雨水
- 纯干货!信贷行业电话销售员一定要掌握的电话沟通话术
- java 横向 打印出来_java jacob调用打印,word,excel横向打印
- Spring boot 支付宝网站支付
- 02 AC-DC整流器(AC Rectifer)简介
- 综合英语二课本电子版哪里有_全新版大学英语综合教程-2-课文电子书(20200702100022)...
- 51单片机连接RC522芯片并通过UART串口与上位机编写的Python脚本实现通信
- java 单元测试_android开发奇技淫巧《通过main方法,写单元测试》