所以我在使用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)
编辑:我的边界将是一个矩形。
答案 0 :(得分:1)
你只需要三点即可。给定边界内的一个点(比如左上角),您可以检查右上角点是否超过正x方向的边界,左下角点是否超过负y方向。
这假设边界是正方形。第四点不能超过已测量点的长度(x,y)。