将地心坐标系转换为与切面对齐的坐标系?

Convert earth-centric coordinate frame to coordinate frame aligned to tangential plane?

假设地球是完美的球体,半径为 R。 地心坐标系E定义如下:

现在在任何给定的纬度、经度和高度,我们可以建立一个局部坐标系 S,其 y-z 平面与地球表面相切,z 指向北极, x 点垂直于该平面。

我需要一个 4x4 变换矩阵 将 3d 点从地心坐标系 E 变换到这个局部坐标系 S.

假设地球是球形的,其实并不难

球坐标来拯救(见here)!球体可以通过 2 个角度进行参数化(正如问题陈述中已经提到的那样)。基于此,您可以制定方程式以转换为笛卡尔坐标。如果你计算这些方程对两个角度的导数,你会得到说明球体上任何点的切线和副切线的方程。基于此,您可以使用从中心指向球体上某个点的矢量作为法线或切线和副切线之间的叉积。上面的 link 中也给出了切线和副切线的公式。

现在你得到了一个基于你的 3 个向量的球体上每个点的正交系统:切线、双切线和法线。唯一缺少的部分是平移,它只是从中心指向球体上一点的向量。给定所有必要的成分,您可以使用 glm 等标准库从这些轴创建一个 4x4 矩阵,或者简单地将这些向量作为矩阵的列(不要忘记标准化切线、双切线和法线!)。根据您使用的是行优先矩阵还是列优先矩阵,您可能需要转置该矩阵。

从 S 到 E 的变换矩阵可能由矩阵的乘积组成:

 Shift along X axis by R+Altitude
 Rotation about Y-axis by Latitude
 Rotation about Z-axis by Longitude

对该矩阵求逆得到 E-S 变换