繁体   English   中英

矩形阵列中的公共点

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM