緯度、経度、および真北度での移動方向があります。さらに 2 つの緯度/経度ポイントで定義された線と交差するかどうかを計算したいと思います。
線を定義する 2 点が大円を作成し、位置と方位角が Rhumb 線を定義すると考えます。
私は数百キロメートルで発生する交差点にのみ関心があるので、考えられるすべての解は必要ありません。
どこから始めればよいかわかりません。
緯度、経度、および真北度での移動方向があります。さらに 2 つの緯度/経度ポイントで定義された線と交差するかどうかを計算したいと思います。
線を定義する 2 点が大円を作成し、位置と方位角が Rhumb 線を定義すると考えます。
私は数百キロメートルで発生する交差点にのみ関心があるので、考えられるすべての解は必要ありません。
どこから始めればよいかわかりません。
簡単な答えは「はい」です。任意の緯度/経度から開始し、大円に沿って移動し続けると、最終的には地球上の他のすべての大円を横切ることになります。地球上の 2 つの大円はすべて、正確に 2 点で交差します (2 つの同一の大円は例外で、すべての点で交差します)。
しかし、単にイエス/ノーの質問をしているわけではないと思います。この 2 つの大円が正確にどこで交差するのか疑問に思われるかもしれません。次の戦略を使用して、それを見つけることができます。
それぞれの大円は、地球の中心を通る平面上にあります。
これらの平面の交点は線です (両方がまったく同じ平面ではないと仮定します)。
その交差する線は 2 つの点で地球の表面を横切ります。まさに 2 つの大円が交差する場所です。
したがって、私たちの使命は次のとおりです。(1)飛行機を見つけます。(2) それらの交線を見つけます。(3) 2 つの交点を見つけ、最後に (4) それらの交点を緯度/経度で表します。(5) どの交点が開始時の緯度/経度に近いかを判断するための追加クレジット。
いいですね?以下は、三角関数とベクトル演算でこれを行います。計算をいくらか単純化するために、次のようにします。
ステップ 1 -- 平面を見つける:
私たちが本当に気にかけているのは、平面の法線だけです。これらを見つける方法は次のとおりです。
-- 1 つの大円は、それが交差する地球上の 2 点によって定義されます。
法線は、原点 (0,0,0) からの各ポイントの (x,y,z) ベクトルの外積になります。球面座標変換を使用して各ポイントの緯度/経度を指定すると、対応する (x,y,z) は次のようになります。
x=cos(lat)*sin(lon)
y=cos(lat)*cos(lon)
z=sin(lat)
それと、lat1/lon1 と lat2/lon2 として与えられた 2 つのポイントで、ベクトル P1=(x1,y1,z1) と P2=(x2,y2,z2) を見つけることができます。
最初の大円法線は外積です。
N1=P1 x P2
-- もう一方の大円は、地球上の点と方位角によって定義されます
点 P3 と方位角 T があります。余弦の球面法則を使用して、方位角 T で PI/4 の距離で P3 を通過する大円に沿って点 P4 を見つけます(ここでも便宜上解決されます)。
lat4=asin(cos(lat3)*cos(T))
lon4=lon3+atan2(sin(T)*cos(lat3),-sin(lat3)*sin(lat4))
次に、通常は以前と同じです。
N2=P3 x P4
ステップ 2: 交差する平面を見つける:
2 つの平面法線が与えられると、それらの外積によって交差する線が定義されます。
L=N1 x N2
ステップ 3: 交点を見つける:
ベクトルL を正規化して、単位球上の交点の 1 つを取得します。もう 1 つの点は、球の反対側にあります。
X1=L/|L|
X2=-X1
ステップ 4: 交点を緯度/経度で表します。
X=(x,y,z) の場合、球座標変換を再度使用し、点が単位球上にあることを考慮します。
lat=asin(z)
lon=atan2(y,x)
ステップ 5: 2 つのポイントのどちらが近いですか?
hasersine 式を使用して、ポイントから X1 と X2 までの距離を計算し、近い方を選択します。
あなたの最善の策は、立体投影法を使用して問題を球から平面にマッピングすることだと思います。この射影は、菱形の線をR=exp(θa) (別名、航程線) の対数螺旋にマッピングし、大円を平面上の円にマッピングするという点で非常に便利です。したがって、問題は対数らせんと円の交点を見つけることになります(その後、球にマップし直します)。
これは、開始するための単なるスケッチです。詳細が必要な場合は、お尋ねください。