2016-05-14 10 views
0

私はこの指定されたRectに最も近いRectをリストから見つける方法はありますか?

[<rect(394, 28, 80, 100)>, <rect(394, 126, 80, 100)>, <rect(394, 224, 80, 100)>, <rect(472, 28, 80, 100)>, <rect(472, 126, 80, 100)>] 

ようRectsのリストを出力して、私は任意のRectへの上記のリストから最も近いのRectを一致させる方法を探しています機能を持っています。

たとえば、このようなRectの場合、<rect(377, 231, 50, 70)><rect(394, 224, 80, 100)>と一致し、それを印刷します。

私はこの

temp_list = [(1, 3), (4, 9), (5, 7), (3, 5), (9, 4), (8, 4), (6, 1)] 
temp_tuple = (5, 11) 

nearest = min(temp_list, key=lambda c: (c[0] - temp_tuple[0]) ** 2 + (c[1] - temp_tuple[1]) ** 2) 

print(nearest) 

ようmin関数を使用して、タプルのタプルやリストであることをやってみましたが、私はそれがのRectデータ型のために働く作ると思いますかわかりません。決定者としての中心間の距離を使用して

+2

は、あなたの問題は、それが明確に定義されていないということは何か2 rectsの間の距離です。それはセンター間の距離ですか?コーナー間の平均距離?辺の平均距離は? –

答えて

0

このような何か、:あなたは、Pythonで何をすべきかの正しい考えを持っている

import math 

distance = 1000 

current_cx = current_rect.centerx 
current_cy = current_rect.centery 

for rect in rect_list: 
    cx = rect.centerx 
    cy = rect.centery 

    if math.sqrt(abs(current_cx-cx)**2 + abs(current_cy-cy)**2)) < distance: 
     nearest_rect = rect 
関連する問題