在地球上画一条路?

时间:2012-09-30 22:52:12

标签: math language-agnostic geometry great-circle

基本上我想:

  • 在地球的两个位置之间绘制一条路径,经度和纬度坐标为
  • 能够使用多条直线(例如使用OpenGL)渲染此路径
  • 指定能够在球体上弧形的高度和奖励点(例如飞行路径)
  • 与它所使用的语言无关。我可以翻译:)

存在“大圆”距离公式,但我不确定如何将其应用于此问题。

1 个答案:

答案 0 :(得分:3)

好的,这是我的方法。如果任何步骤不清楚,请告诉我,我会详细说明。

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