2

だから基本的に私はしたい:

  • 経度と緯度の座標を使用して、地球上の 2 つの位置の間のパスを描画します
  • このパスを複数の直線でレンダリングできるようにする (例: OpenGL を使用)
  • 高度を指定し、球体上で弧を描くことができるボーナスポイント (例: 飛行経路)
  • それがどの言語であるかは問題ではありません。私は翻訳できます:)

「大円」距離の公式がありますが、この問題にどのように適用するかはわかりません。

4

1 に答える 1

3

よし、これが私のアプローチだ。手順のいずれかが不明な場合は、教えてください。詳しく説明します。

  1. AからBに移動します。
  2. これらのベクトルa = A /|A|、b = B /|B| を正規化します。(等級 |A| と |B| は、地上にいる場合、地球の半径になります。)
  3. 外積c = a x bをとります。このベクトルcを中心に回転して、 ABに運びます。cの大きさは、 ABの間の角度の余弦です: theta = acos(|c|)。かっこいいでしょ?
  4. 1 回のジャンプで移動したくはありません。n 個の小さなステップが必要なので、シータを分割します。Aから開始し、各ステップでcを中心に角度 theta/n だけ回転します。
  5. これにより、地面に沿ったパスが得られます。円弧を作成するには (ある高度で開始/終了する可能性があります)、各ステップで追加する高度を決定します (球座標では非常に簡単です。デカルトではベクトルをスケーリングする必要があります)。
于 2012-10-01T02:02:17.790 に答える