计算垂直于由点和真北航向描述的平面的 3d 矢量

use*_*332 4 math 3d geometry vector geolocation

我在地球表面有一个点,我正在将其从地球中心转换为向量。

我有一个以度数表​​示的真北航向,描述了该点将在地球表面行进的路径。

我需要计算一个向量,该向量垂直于该点沿地球表面的路径所创建的平面。

我尝试使用此处描述的方法计算沿路径的任意点 ,然后取两个向量的叉积,但是它似乎不够准确,而且似乎比必要的开销更多。

这与我的另一个 post ray-polygon-intersection-point-on-the-surface-of-a-sphere 有关

Jes*_*der 5

我假设您正在尝试计算一个位于路径平面上的向量,而不是垂直于它的向量(因为您已经有了一个 - 即从原点到您点的向量)。

您首先需要计算位于该平面上指向正北和正东的向量。为此,我们将P您的点O称为原点,并且N = (0, 0, R)是球体顶部的点。然后

e = cross(N - P, P - O)
Run Code Online (Sandbox Code Playgroud)

是一个指向正东的向量,与球体相切,因为它垂直于P - O球体的半径。

出于类似的原因

n = cross(e, P - O)
Run Code Online (Sandbox Code Playgroud)

将指向正北,并与球体相切。

现在对n和 进行归一化e,并且您已经获得了您所在点的切线空间的正交基。要找到一个方向的矢量theta(从正轴线东侧的发言权,逆时针方向,以简化数学),只需要一点点e和一点点的n

v = cos(theta) * e + sin(theta) * n
Run Code Online (Sandbox Code Playgroud)