检查方块是否包含在另一个方格中

时间:2014-03-05 17:54:35

标签: python opengl pyglet

所以我在使用pyglet(opengl)在python中做一个小项目。 当我点击屏幕上的一个点时,会生成一个从坐标开始均匀扩展的Square。

因此,例如,如果我点击(100,100),将从边长为3的(99,99)绘制一个正方形。每个生成的左下点将减少(-1,-1)和边长增加2。

我想要做的是检测方块是否在窗口边界之外,以便我可以从我的方块集中删除它。

我现在正在做的只是检查所有角落是否在窗口内,但必须有更好的方法来做到这一点?我有边长,正方形的中心和左下角的点。

这是我的方形类,我看的方法是in_bounds方法。现在它只是回归真实。以前我在计算每个角落,但我认为使用一个长度更短的点。

class Square:

    def __init__(self, x, y, x_max, y_max):
        self.center = (x,y)
        self.point = (x-1, y-1)
        self.length = 3
        self.x_bound = x_max
        self.y_bound = y_max

    def next(self):
        self.point = (self.point[0] - 1, self.point[1] - 1)
        self.length += 2

    def in_bounds(self):
        return True
        #return not (self.top_left[0] < 0 and self.top_right[0] > self.xbound and self.bot_left[1] < 0 and self.top_left[1] > self.ybound)

编辑:我的边界将是一个矩形。

1 个答案:

答案 0 :(得分:1)

你只需要三点即可。给定边界内的一个点(比如左上角),您可以检查右上角点是否超过正x方向的边界,左下角点是否超过负y方向。

这假设边界是正方形。第四点不能超过已测量点的长度(x,y)。