我有一組矩形,我需要計算它們之間的移動距離。我已經嘗試過實施它,但是代碼被炸燬並且效果不佳。矩形間的移動距離
也許有人可以幫助我用一些聰明(和高效)的公式,可以用來計算兩個矩形之間的距離?
實例:
A
和B
之間的距離是線路1
的長度。 A
和C
之間的距離是行2
的長度。等等。
我使用python來實現一切。如果已經存在一個函數(例如在scipy中)並且有人知道它,這也會很棒。
謝謝
我有一組矩形,我需要計算它們之間的移動距離。我已經嘗試過實施它,但是代碼被炸燬並且效果不佳。矩形間的移動距離
也許有人可以幫助我用一些聰明(和高效)的公式,可以用來計算兩個矩形之間的距離?
實例:
A
和B
之間的距離是線路1
的長度。 A
和C
之間的距離是行2
的長度。等等。
我使用python來實現一切。如果已經存在一個函數(例如在scipy中)並且有人知道它,這也會很棒。
謝謝
我建議,你用矩形和矩形的寬度來計算距離的中央點工作。您主要必須弄清矩形的哪些角(邊)用於計算。其他一切都很簡單。一個簡單的例子:
class Rect:
def __init__(self,cpt,w,h):
self.x = cpt[0]
self.y = cpt[1]
self.w = w
self.h = h
def dist(self,other):
#overlaps in x or y:
if abs(self.x - other.x) <= (self.w + other.w):
dx = 0;
else:
dx = abs(self.x - other.x) - (self.w + other.w)
#
if abs(self.y - other.y) <= (self.h + other.h):
dy = 0;
else:
dy = abs(self.y - other.y) - (self.h + other.h)
return dx + dy
#example:
A = Rect((0,0),2,1)
B = Rect((4,5),1,2)
C = Rect((-1,-5),1,1)
print(A.dist(C))
print(A.dist(B))
print(B.dist(C))
我玩過你的代碼,它似乎工作:)謝謝! –
你也可以很容易地獲得矩形之間的「真實/對角線」距離,只需將return語句更改爲:'return sqrt(dx ** 2 + dy ** 2)'並使用數學或numpy模塊作爲根目錄 – LynxLike
對於這個額外的提示:)順便說一句:我真的很喜歡你的代碼。這很簡單,也很容易理解。 –
。已經有一個答案的問題: http://stackoverflow.com/questions/8224470/calculating-manhattan-distance#8224516 這可能是Java,但它很容易變成蟒蛇 –
我找到了蟒蛇一個http://stackoverflow.com/questions/35363811/manhattan-distance-python –
這不會直接幫助,因爲你只得到節點之間的距離。不幸的是,如果一個矩形不在另一個矩形的「陰影」中,兩個矩形之間的最小距離將只是最近角點之間的距離。但是,如果情況並非如此,則需要投影唯一可能的邊緣,並獲得可能的兩個中間點以確定距離。順便說一句,在這種情況下,距離將是歐幾里得距離 – Quickbeam2k1