本文主要从数学的角度来证明如何求解地球的法向量。从以下几个方面进行介绍:

1、地球坐标系

2、笛卡尔坐标系下法向量证明

3、经纬度坐标系下法向量证明

4、经纬度转笛卡尔证明

5、东北天的坐标向量证明

地球坐标系

这里解释用笛卡尔坐标系表示和用经纬度来表示。

地心地固坐标系(Earth-Centered, Earth-Fixed) 又简称地心坐标系,英文简称(ECEF)。

用笛卡尔坐标系表示:

线性代数-求解地球法线_人工智能

笛卡尔坐标系

其中:

1、O为椭球的中心点

2、Z轴指向椭球的北极N

3、X轴指向起始子午面与赤道的交点

4、Y轴位于赤道面上,且按右手坐标系与X轴成90度夹角

经纬度表示

线性代数-求解地球法线_算法_02

假设空间某点P,用经纬度表示的话,你们B代表纬度,L代表经度,H代表大地高。

纬度B:P点沿着地球法线方向与赤道面的夹角。向北为正称为北纬(0-90),向南为负称为南纬(0-90) 实际表示可以用(-90 --90)

纬度L:NPS面与参考椭球起始子午面NGS的夹角。由起始子午面起算,向东为正称为东经(0-180),向西为负称为西经(0-180)。实际表示用(-180-180)。

大地高H:表示P点沿该点法线到椭球面的距离,向上为正,向下为负。

笛卡尔坐标系下法向量证明

笛卡尔坐标系下,地球曲面可以用下面函数表达:

线性代数-求解地球法线_算法_03

我们先从曲线的切线开始研究,先选择曲面上的任意一条曲线,可以用下面函数表示:

线性代数-求解地球法线_人工智能_04

曲线上任意一点的切线,可以用下面函数表达式表示:

线性代数-求解地球法线_计算机视觉_05

为什么可以这么表示呢?我的思路如下:

假设取曲线上两点:A(x1,y1,z1) 和 B(x2,y2,z2)

那么AB向量可以表示如下:

线性代数-求解地球法线_算法_06

AB向量相同方向的向量可以表示如下:

线性代数-求解地球法线_机器学习_07

当我们x2和x1无线接近的时候,其实曲线的任意一点的切线即为

线性代数-求解地球法线_计算机视觉_08

接下来我们回到地球曲面函数

线性代数-求解地球法线_算法_09

我们对曲面函数对x求偏导。

线性代数-求解地球法线_数学建模_10

换算成向量点乘的形式:

线性代数-求解地球法线_机器学习_11

我们可以发现向量(Fx,Fy,Fz)与所有曲线的切线垂直。所以得出曲面某点的法线为(Fx,Fy,Fz)。

地球的曲面方程为:

线性代数-求解地球法线_算法_12

那么椭球某点法向量为:

线性代数-求解地球法线_人工智能_13

经纬度坐标系下法向量证明

经纬度的定义可以见上图,这里在重复一下:

线性代数-求解地球法线_机器学习_14

我们把发现PO'平移到经过原点,可以绘制出下图,AG即新的法向量,G点位法向量平移之后与球面的交点。

       线性代数-求解地球法线_计算机视觉_15

我们可以算出如下结果:

线性代数-求解地球法线_算法_16

最终可以求出AG的向量如下。

线性代数-求解地球法线_机器学习_17

同时去掉R,法向量的方向性没有变化,可以写出法向量与经纬度之间的关系:

线性代数-求解地球法线_数学建模_18

经纬度转笛卡尔证明

已知某点的经纬度和大地高,求其笛卡尔坐标系坐标。

根据经纬度坐标系下法向量证明,我们可以通过经纬度和大地高计算出地球的法向量,而且是个明确的值。假设计算法向量为n。

根据笛卡尔坐标系下法向量证明,我们可以通过笛卡尔坐标系计算出法向量如下:

线性代数-求解地球法线_计算机视觉_19

我们这里只能保证法向量的方向一致,我们可以将法向量n写成下面的格式

线性代数-求解地球法线_算法_20

我们两边*呈上一个向量如下: 

线性代数-求解地球法线_计算机视觉_21

这里的*不是点乘也不是X乘,其运行定义参考下面函数:

  template<typename T, qualifier Q>
GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> operator*(vec<3, T, Q> const& v1, vec<3, T, Q> const& v2)
{
return vec<3, T, Q>(
v1.x * v2.x,
v1.y * v2.y,
v1.z * v2.z);
}

更多文章请关注《万象专栏》