그래서 pyglet (opengl)을 사용하여 파이썬에서 약간의 프로젝트를하고 있습니다. 화면의 한 점을 클릭하면 좌표에서 동일하게 확장되는 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)
편집 : 내 경계는 직사각형입니다.
죄송합니다. 내 경계가 사각형임을 잊어 버려서 죄송합니다. – Igglyboo
그건 괜찮을거야. 모든 사각형은 직사각형입니다. 따라서 사각형이 한 모서리에서 경계선의 값을 초과하면 다른 모서리에 나타납니다. 나는 더 일반적 이었음에 틀림 없다. – sten