球の表面上のレイポリゴン交差点
-
06-07-2019 - |
質問
私は、ポイント(緯度/経度)と、このポイントが移動する角度(真北)の見出しを持っています。多数の静止ポリゴン(緯度/経度で定義されたポイント)がありますが、これらは凸である場合とそうでない場合があります。
質問は、ポリゴンとの最も近い交差点がある場合、どのように計算するかです。レイトレーシングに関するいくつかの混乱する投稿を見てきましたが、レイとポリゴンが同じ平面上になく、ポリゴンも凸でなければならない場合、それらはすべて3Dに関連しているようです。
解決 4
このページの答えは最も正確であるようです。
他のヒント
単純な2Dライン交差を行うことができるはずのように聞こえます...
ただし、以前にLat / Longを使用したことがあり、どの2D座標系にも正確には当てはまらないことがわかっています。
一般的な「IsPointInPolygon」から始めます。関数の場合、グーグルでそれらの数百万を見つけてから、それをポリでテストして、それがどのように機能するかを確認できます。それらが十分正確であれば、それを使用してください。ただし、緯度/経度座標の非正方形の性質により、球面ジオメトリを使用していくつかの変更を行う必要がある場合があります。
2Dでは、計算はかなり簡単です...
常に、レイの端点がポリゴンの内部にないことを確認することから始めることができます(その場合、交差点であるため)。
エンドポイントがラインから外れている場合、ポリゴンの各境界フィーチャとレイ/ラインセグメントの交差を行い、最も近い場所を使用できます。凸/凹フィーチャなどを処理します。
レイがポリゴンの各線分と交差するかどうかを計算するこの手法を使用。
(受け入れられた)回答( h
と呼びます)の結果のスケーリング係数は、「光線に沿った交差点の距離」です。 0
と 1
の間の値を探しています。
複数の交差点がある場合、それは問題ありません! 「最初に」が必要な場合は、 h
の最小値を持つものを使用します。