use*_*332 4 math 3d geometry vector geolocation
我在地球表面有一个点,我正在将其从地球中心转换为向量。
我有一个以度数表示的真北航向,描述了该点将在地球表面行进的路径。
我需要计算一个向量,该向量垂直于该点沿地球表面的路径所创建的平面。
我尝试使用此处描述的方法计算沿路径的任意点 ,然后取两个向量的叉积,但是它似乎不够准确,而且似乎比必要的开销更多。
这与我的另一个 post ray-polygon-intersection-point-on-the-surface-of-a-sphere 有关。
我假设您正在尝试计算一个位于路径平面上的向量,而不是垂直于它的向量(因为您已经有了一个 - 即从原点到您点的向量)。
您首先需要计算位于该平面上指向正北和正东的向量。为此,我们将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)