好的,这是我的方法。如果任何步骤不清楚,请告诉我,我会详细说明。
- 我们将从 A 转到 B 。
- 我们对这些向量进行归一化, a = A / | A |, b = B / | B |。
(如果我们留在地上,幅度| A |和| B |将是地球的半径。)
- 我们采用交叉积, c = a x b 。
我们将围绕此向量旋转 c ,将 A 带到 B , c 的幅度为 A 和 B 之间角度的余弦:theta = acos(| c |)。很酷,对吧?
- 我们不想一次性跳转,我们想要n个小步骤,所以我们将theta分开。我们从 A 开始,然后在每一步我们围绕 c 旋转角度θ/ n。
- 这给了一条沿着地面的路径。为了获得一个弧(可能在某个高度开始/结束),我们决定在每个步骤添加多少高度(球形坐标非常容易 - 在笛卡尔坐标系中我们必须缩放矢量)。