2009-08-24 37 views
3

道路を表すポリラインがあり、すべての部分で道路の幅を知っていれば、ポイントが道路上にあるかどうかを判断するためのアルゴリズムはありますか?私はライン自体が1pxの幅を持っているので、これをどうやって行うのか全く分かりません。ポイントが道路上にあるかどうかを調べる

おかげで、

ジェフ

+0

迅速な回答をいただき、ありがとうございます。これらのサウンドは、私が取るつもりだったアプローチに似ていましたが、私が間違っていたことがあるかどうかをチェックしたかったのです。あなたの答えはとても役に立ちます。 –

答えて

2

ラインをポイントの最小距離を検索し(それが線に垂直なベクトルであろう)。実際の計算P0は道路セグメントの最初の点、vは道路セグメントベクトル、wはP0から問題の点までのベクトルです。ポリラインの各エッジを反復処理する必要があります。距離がそのセグメントの幅よりも小さい場合、それは道路上にある "オン"である。

d = |v x w|/|v| 

丸みを帯びた(一定の半径の)角として扱うかどうかによって、角が微妙になることがあります。

2

おそらく、線分の長方形とその幅を作成し、長方形/点の衝突アルゴリズムを使って長方形に点が含まれているかどうかを判断できます。良いアルゴリズムはwidth = 1のシナリオを説明し、線分の逆関数を構築して、y-1(point.y)がline_segment.x1とline_segment.x2の間のxであるかどうかを判断するだけです。

関連する問題