2014-03-05 47 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