-2
私は約40点の2D点(xとy)のリストを持っています。リストから最初のポイント(たとえば180,0)から始まり、その最初のポイント(180、0)までリストから最も近いポイントを見つけるスクリプトが必要です。一番近い点が見つかると、すでに使用されている点(180、0)を使用せずに、同じことを再度実行する必要があります(最も近い点が最初の点になります)。そして、すべての点が使用されるまでこれを行います。このように、私のランダムなリストは、流暢なラインパスになる点のリストに順序づけられるべきです。特定の2D点から2D点のリストまでの最も近い点Python
そして、これは、それがどのように見えるかです::
def arrange_points(points):
# arranges all 2D points in a fluent and consistent linepath order
size = len(points) #number of elements in list
di = [] #list containing all distances from start point
start_point = points[0]
for i in range (size):
next_points = points[i]
dist = math.sqrt((next_points[0] - start_point[0])**2 + (next_points[1] - start_point[1])**2) #distance of start point to all other points
di.append(dist)
ln = min(filter(None, di)) # smallest distance from start point, except 0
f = di.index(ln) # finds place of ln in list di
next_point = points[f] # retrieves corresponding point from points, that corresponds to ln
return di
return next_point
di = arrange_points(points)
# 0 and previous points cannot be taken
これは私linepathが今のように見えるものです:私のコードは、これまでのところ、このようになります。
プロットされた点は次のようになります:(間違った順序)基本的に180,0で始まり、コードを取り戻すには)正しい順序でリストを作成する必要があります。
私のコードで私を助けることができる人は誰ですか?
のための円弧は何ですか?あなたは "最も近い点"を求めているが、通常はそれに続く弧では見つからないと言っている。そして、残りのリストの中の最も近いポイント*を現在のポイントにしたいと思いますか? –
@RoryDaultonはい、リストの残りの部分で、現在の点(開始点)に最も近い点です。円弧および線分は、基本的に2dポイント(例えば、円弧または線分あたり10ポイント)に分割されるので、ポイントを接続すると、下の画像の表現がより鮮明ではなくなります。私が持っている問題は、順序が正しくないということです。私が180,0で始まり、最も近い点に従うとうまくいくはずです。リスト内のすべてのポイントについて投稿した画像を参照してください。 – Henry