14

線分(線ではない)(A1, B1)(A2, B2)、のセットがあります。(A3, B3)ここでABは線分の終点です。それぞれAに座標Bがあります。(x,y)

質問:コード行に実装されたに示されているように、point Oと の間の最短距離を知る必要があります。私が本当に理解できるコードは、疑似コードまたは Python のいずれかです。line segments

コード:このコードで問題を解決しようとしましたが、残念ながら正しく動作しません。

def dist(A, B, O):
    A_ = complex(*A)
    B_ = complex(*B)
    O_= complex(*O)
    OA = O_ - A_
    OB = O_ - B_
    return min(OA, OB)
# coordinates are given
A1, B1 = [1, 8], [6,4]
A2, B2 = [3,1], [5,2]
A3, B3 = [2,3], [2, 1]
O = [2, 5]
A = [A1, A2, A3]
B = [B1, B2, B3]
print [ dist(i, j, O)  for i, j in zip(A, B)]

形

前もって感謝します。

4

6 に答える 6

4

基本的なアルゴリズム: 線があるふりをして、線の上にあるときはA左側にあるようにします (必要に応じて画像を頭の中で回転させて一致させます)。BO

通常どおり最も近い点を見つけます。ポイントが と の間ABある場合は、完了です。の左側にあるA場合、最も近い点はAです。ポイントが の右側にあるB場合、最も近いポイントはBです。

AB、およびOすべてが同じ行にある場合は、特別な注意が必要な場合とそうでない場合があります。この位置のいくつかのテストを含めるようにしてください。

于 2014-11-27T01:16:00.523 に答える