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