我有一组矩形,我需要计算它们之间的移动距离。我已经尝试过实施它,但是代码被炸毁并且效果不佳。矩形间的移动距离
也许有人可以帮助我用一些聪明(和高效)的公式,可以用来计算两个矩形之间的距离?
实例:
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