2014-03-05 45 views
0

所以我在python中使用pyglet(opengl)做一个小项目。 当我点击屏幕上的一个点时,会生成一个Square,它可以从坐标中平等地展开。检查广场是否包含在另一个广场

因此,例如,如果我点击(100,100),将从(99,99)中绘制一个正方形,边长为3.左下角的点每一代会减少(-1,-1)长度增加2.

我想要做的是有一种方法来检测广场是否超出了窗口的边界,所以我可以从我的广场集合中删除它。

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

这是我的方形课,我看的方法是in_bounds方法。现在它只是返回true。以前,我正在计算每个角落,但我认为使用长度单一的点更好。

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

你可以用三点完成。给定边界内的点(比如左上角),可以检查右上角的点不超过正x方向的边界,并且左下点不超过负y方向。

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

+0

对不起,忘了提及我的边界是矩形。 – Igglyboo

+0

这也可以。所有正方形都是矩形。所以如果你的广场超过了一个角落边界线的价值,那么它就会在另一个角落。尽管如此,我应该更加宽泛。 – sten