[英]Common Points in an array of rectangles
设计一个在矩形数组之间找到公共交点的函数,但是该方法在应为true时返回False。 该函数在类矩形中调用相交函数。 有什么建议么。
Class Rectangle:
def intersects(self, other):
"""Return true if a rectangle intersects the other rectangle."""
return (self.top_right.x > other.bottom_left.x and self.bottom_left.x < other.top_right.x and self.bottom_left.y < other.top_right.y and self.top_right.y > other.bottom_left.y)
Class Many_Rect:
def common_point(self):
value = False
for i in range(len(self.rectangles) - 2):
for j in range(len(self.rectangles) - 1, -1, -1):
if self.rectangles[i].intersects(self.rectangles[j]) == True:
value = True
else:
return False
return True
问题的一部分是因为在代码中,只要任何矩形不相交,函数就会返回False-但除非所有矩形均不相交,否则函数不应返回False。 但是,如果两个矩形确实相交,则可以在找到后立即返回True,因为不再需要检查点。 您的代码应如下所示:
def common_point(self):
for i in range(len(self.rectangles) - 1):
for j in range(i+1,len(self.rectangles)):
if self.rectangles[i].intersects(self.rectangles[j])
# these rectangles intersect - no point checking any more
return True
# none of the rectangles intersect
return False
我不确定为什么您使用len(self.rectangles)-2作为i的范围-我认为这应该是-1。 而且j的范围应该在i + 1到len(self.rectangles)之间,否则当i == j时,您总是会得到一个交集。 我已经合并了这些更改。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.