您的位置:首页 > 其它

漫游器在椭球上的定位和变换

2016-06-29 09:38 190 查看
漫游器的使用场景非常丰富,osg的osgGA库中包含了许多常用的漫游器类型,如:最常见的TrackballManipulator(轨迹球漫游器)、DriveManipulator(驾驶漫游器)、FirstPersonManipulator(类似于第一人称射击游戏漫游器)等,根据不同的应用领域可以定制各种实用的漫游器。本文主要对常用的GIS类软件中使用的地形漫游器(如Google Earth)中的一些数学变换做一些学习记录。

地理坐标系统
(1)ECEF坐标系统

在常用的漫游器软件开发中,一般使用一种以地心为坐标原点的坐标系统,一般称之为ECEF坐标(Earth-CenteredEarth-Fixed),这个坐标系是一个三维的直角坐标系统。这与我们常常使用的经纬坐标不同,使用经纬坐标对于计算来说并不方便。下面我们对这个坐标系统做一些描述,这个ECEF在不同基准面坐标下并不是等价的(比如WGS84坐标基准和我国西安80的坐标基准,也就是说对每一个基准面都可以建立它们各自的ECEF坐标系统,ECEF的约定如下:

(a)坐标原点是地球的质心
(b)Z轴是过原点并指向北极的轴
(c)X和Y轴都是在赤道平面,X轴是过英国格林尼治天文台(0度经线处),Y轴与X和Z构成右手系)



(2)NEU坐标系统(North-East-Up)

在围绕地球运动的航天器中使用的最广泛的是一个称之为 Local Tangent Plane(LTP)的局部切平面坐标系统,这个坐标系统的定义如下:

(a)N和E方向组成的坐标轴是在椭球表面某一点的切平面上

(b)E方向(局部坐标的x轴)指向椭球局部向东的方向

(c)N方向(局部坐标的y轴)指向局部经线的向北方向

(d)U方向(局部坐标的z轴)沿着椭球表面的法线方向



坐标系统之间的转换
从ECEF到NEU(有的地方也成NED,与NEU仅仅局部z轴方向相反)坐标之间需要经过旋转和平移操作,我们首先计算旋转,可以先计算NEU坐标轴的方向向量。在计算之前有些概念需要先了解一下,地球上某一点的纬度值可以有以下两种:Geocentric Latitude和Geodetic Latitude,前者是地球上的点到椭球中心的连线与赤道平面的夹角,后者是地球上点法线方向与赤道平面的夹角,如下图所示:



如果我们使用Geocentric latitude的方式进行计算,那么计算NEU坐标三个轴的方向比较简单,如下图所示:



假设局部坐标原点是P(在椭球表面)的坐标是(x,y,z),椭球的中心是O,那么NEU局部坐标的z轴方向就是向量 OP(,假设OP的长度是R,那么可以得到:P点的坐标是:



O点的坐标是(0,0,0),因此OP方向向量是



局部坐标的向东的方向(局部坐标y轴方向)PE垂直于PN和PO组成的平面(经线平面),因此它与ECEF坐标x轴的夹角是:



因此PE方向向量是



PN的方向向量(up叉乘east得到)是:



另外平移的距离是P点在ECEF世界坐标中的位置,一般通过P点的经纬度通过计算得到,于是ECEF世界坐标转到NEU的转换矩阵是:



其中最后一行的X Y Z是局部坐标原点在ECEF世界坐标中的值(备注:以上转换都是使用 行向量的方式进行的)

上面的方式看着十分自然,但是其实是有问题的,因为PO连线并不垂直与椭球表面,不是椭球的法线方向,我们真正需要使用的应该是Geodetic的纬度值进行计算,这个计算相对复杂一下,如下图所示:



首先我们计算Up的方向(在图中是AOn这个向量),通过计算A点和On这两点的坐标计算这个向量,On的坐标值计算如下:



使用Geodtic经纬度得到的坐标系的Up方向与椭球表面是垂直的,正好是椭球表面的法线方向。这个局部坐标ENU是很多三维GIS类软件在设计使用使用的局部坐标系统,当给定经纬度需要把模型放置在指定位置的时候,经常会使用这里面的变换,将局部坐标转换到世界坐标中,保证了当物体在放置点的位置正好是垂直于地球表面。

参考文章:
1. 纬度的定义
2. ECEF坐标系统
3.NED坐标系统
4.ECEF与LTP坐标系统
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  osg gis 椭球变换