1球心坐标(ECEF)与本地坐标(NEU)

假如你来到一个陌生城市,你很可能需要问路、通常会告诉你向北走100米,右转,向东走100米,理解起来很直观。你给儿子买了一个地球仪,你从北京(39,115)转到伦敦 (51,0),这个动作就可以分解为两步:先转到同一个经度(39,0),在转到同一个维度(51,0)

这个例子体现了一个问题:不同的地理范围下会使用更适合的坐标系。比如前者是局部的平面坐标,而后者是球面坐标。因此,同一个点相对不同的原点,具有不同的相对位置:既是地球上的一个经纬度,又是“出门右转富士康”的这类的位置。如图,蓝色坐标系就是球心坐标,而绿色坐标系是以球面一点为原点的本地坐标系。准确讲,就是该点对应球的切面和法线组成的空间。

这自然引出了这个问题:如何从以球心为原点的球面坐标到以球面上任意一点为原点的局部坐标,坐标系之间的转换,答案就是矩阵。

坐标系的换算,其实就是坐标原点之间的转换。比如发射导弹,首先瞄准,然后发射,这里面就包括两个动作:旋转和平移。如上图,旋转分为两步,经度(Z轴)旋转和纬度(X轴)旋转,分别是上图中绿色和蓝色两个过程。

如上,假设该经纬度对应的笛卡尔坐标为(XYZ),这就是从球心原点到该点的平移,两者结合得出矩阵的计算公式如下:

公式有了,我们把复杂的空间几何问题转为数值计算,便于抽象理解和计算机的处理。该如何理解矩阵背后的几何意义呢?

2矩阵的几何意义

如上是两个二元一次方式组,不难推算,X = 1,Y=2是方程组的解。该方式式对应的矩阵形式如下:

对应的行优先对应的几何意义如下,红线代表方程式一,蓝线代表方式式二,两条直线相交于(1,2)。

Row Picture

我们在看看列优先的几何意义,此时矩阵分解为:

我们来看看其对应的向量意义:

如上图,分别是向量[1,2]和[-1,1],我们已经知道x和y的值分别为1,2。如上图,我们把向量[-1,1]延长2倍,也就是[-2,2],然后将该向量平移到[1,2]点,也就是向量1的终点,如下图,就是向量加的计算过程,[1,2] + [-1,1] *2 = [-1,4],几何意义就是在该向量偏移量的累加。

Col Picture

矩阵之所以能够解决坐标转换问题,正是因为其Col Picture所体现的向量意义。现在,我们再体会一下之前的矩阵,是否有一点亲切。


3优化

如上是矩阵公式推算和几何意义的解释。看上去是几何问题,实际上是函数问题,这正是矩阵的价值所在。但函数问题也有一个缺点,特别是矩阵,计算量太大,占用内存也不低。大家在做数学题的时候应该都有过类似感觉,一个代数题好复杂,计算了半天,还容易犯错,好不容易才得出答案。这时老师用几何的思路来求解,一目了然,如穿越虫洞般不费吹灰之力。

回到这个问题,我们把坐标转换抽象成矩阵问题,对应的几何意义就是该点的切面和法线。

假设是一个圆,如下,圆心到该点就是其切面法线,这个向量很容易得出,通过点乘可以很容易的得到法线对应该点的垂线。

这时,把这个圆看成一个球,两条黑线的叉乘就可以得出另一个垂线,这就是该点对应的NEU坐标的三个轴,是不是也很容易理解,而且只需要三个步骤,计算量很小:

  • 减法求出Up向量

  • 点乘求出East向量

  • 叉乘求出North向量


这正是Cesium中提供的思路,对应Transforms.eastNorthUpToFixedFrame方法,我就不当搬运工了,Over

Cesium之球心坐标与本地坐标的更多相关文章

  1. 轨迹系列5——验证轨迹GPS坐标转换为本地坐标的四/七参数是否准确的一种方案

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1. 背景 目前对多个项目轨迹不准确的情况做了排查,发现导致轨迹偏移百分 ...

  2. unity---世界坐标和本地坐标的转换

    会受到缩放的影响 用的比较多的是 本地坐标转换为世界坐标,比如在自己周围释放物体 当物体发生旋转,方向会发生变化

  3. Unity 本地坐标到世界坐标,世界坐标到本地坐标

    世界=>本地 public GameObject mTarget; public GameObject mPar; //这个注意一定要是mTarget的第一父物体. // Use this fo ...

  4. [UE4]世界坐标、本地坐标

    本地坐标 世界坐标

  5. 白鹭引擎 - 本地坐标和舞台坐标的转化 ( globalToLocal, localToGlobal )

    class Main extends egret.DisplayObjectContainer { /** * Main 类构造器, 初始化的时候自动执行, ( 子类的构造函数必须调用父类的构造函数 ...

  6. UGUI世界坐标转换为UI本地坐标(游戏Hud的实现)

    实现世界坐标的原理是: 世界坐标和UGUI的坐标分属两个坐标系,他们之间是无法进行转换的,需要通过屏幕坐标系来进行转换(因为屏幕坐标是固定的),即先将游戏场景中的世界坐标通过游戏场景Camera转化为 ...

  7. 网络游戏开发-客户端4 关于Egret的本地坐标和舞台坐标

    因为最近公司事情比较多,所以没怎么更新博客. 不过咱们这个游戏还是在继续往下写. 今天晚上打算写斗地主的出牌动画,遇到一个问题,就是关于本地坐标和舞台坐标的计算问题 在Egret官网的解释是:x 和 ...

  8. 地图坐标转换 -- 火星坐标与GPS坐标

    第一次处理地理位置的数据的人,没什么经验,往往掉入很多坑浪费不少时间.我也是刚刚从坑里爬出来.这篇博文主要是把入门GPS轨迹分析的经验总结一下,以方便大家少走些弯路. (1)可视化 GPS 路径 刚拿 ...

  9. 火星坐标、百度坐标、WGS-84坐标相互转换及墨卡托投影坐标转经纬度JavaScript版

    火星坐标 火星坐标是国家测绘局为了国家安全在原始坐标的基础上进行偏移得到的坐标,基本国内的电子地图.导航设备都是采用的这一坐标系或在这一坐标的基础上进行二次加密得到的.火星坐标的真实名称应该是GCJ- ...

随机推荐

  1. UWP: 体验应用内购新接口——StoreContext类

    Windows 1607 版本(内部版本 14393)之后,微软在 SDK 添加了一些与应用商店相关的新接口,像应用试用与购买.应用内购等.这些接口相对于原来的接口要方便很多.就拿应用内购来说,以前的 ...

  2. AlloyTouch之select选择插件

    原文地址:https://github.com/AlloyTeam/AlloyTouch/wiki/Simple-Select 写在前面 很多情况下,产品希望统一安卓和IOS select交互和样式. ...

  3. iOS应用 跳转到系统的设置界面

    现在很多APP都需要获取用户权限,例如,允许调用位置信息,读取短信,拨打电话,开启WIFI,掉头摄像头等,用户不允许APP获取这些权限的时候.最好的用户体验是,直接跳转到系统设置界面,让用户自己设置. ...

  4. RHL 6.0学习日记, 先记下来,以后整理。

    今天又遇到哪些问题呢? 1.配置网络的问题,我把网络配置文件胡乱改了,然后就上不了网了 因为一直都没怎么用到网络,网线都不怎么连接的,今天只是突然想ping一下,于是就Ping 了一下,一开始ping ...

  5. Python入门教程(1)

    人生苦短,我用Python! Python(英语发音:/ˈpaɪθən/), 是一种面向对象.解释型计算机程序设计语言,由Guido van Rossum于1989年底发明,第一个公开发行版发行于19 ...

  6. 深入理解 JavaScript 异步系列(2)—— jquery的解决方案

    第一部分,jQuery-1.5 之后的 ajax 本地址http://www.cnblogs.com/wangfupeng1988/p/6515779.html未经允许不得转载~ $.ajax这个函数 ...

  7. node.js爬虫爬取拉勾网职位信息

    简介 用node.js写了一个简单的小爬虫,用来爬取拉勾网上的招聘信息,共爬取了北京.上海.广州.深圳.杭州.西安.成都7个城市的数据,分别以前端.PHP.java.c++.python.Androi ...

  8. 1935: [Shoi2007]Tree 园丁的烦恼

    1935: [Shoi2007]Tree 园丁的烦恼 Time Limit: 15 Sec  Memory Limit: 357 MBSubmit: 648  Solved: 273[Submit][ ...

  9. 2761: [JLOI2011]不重复数字(平衡树)

    2761: [JLOI2011]不重复数字 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 2133  Solved: 825[Submit][Stat ...

  10. 20144306《网络对抗》MAL_逆向与Bof基础

    实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串. 该程序同时包含另一个代码片段,getShe ...