두 사각형이 겹치는지 확인하는 방법
조회수 14283회
직사각형의 정보(x-pos
, y-pos
, height
, width
)를 입력받아 사각형끼리 겹치는지를 판단하는 프로그램을 만들고 있습니다.
모든 input은 int
형이고 사각형은 직사각형만 입력 받을거구요.
제 나름대로 만들어보려 했지만 잘 안됩니다. 어떻게 해야 하는지 간략하게 설명해주실 분 없나요
2 답변
-
if (RectA.Left < RectB.Right && RectA.Right > RectB.Left && RectA.Top > RectB.Bottom && RectA.Bottom < RectB.Top )
혹은
Cartesion coordinate
를 쓰면if (RectA.X1 < RectB.X2 && RectA.X2 > RectB.X1 && RectA.Y1 < RectB.Y2 && RectA.Y2 > RectB.Y1)
로 검사해야 합니다.
유형을 나눠 보면 Rect A, and Rect B에 대해 다음의 4가지 경우 중 하나라도
true
이면 두 사각형은 겹칠 수 없습니다.- Cond1 - A의 왼쪽 모서리가 B의 오른쪽 모서리보다 오른쪽에 있음
- Cond2 - A의 오른쪽 모서리가 B의 왼쪽 모서리보다 왼쪽에 있음
- Cond3 - A의 위쪽 모서리가 B의 아래쪽 모서리보다 아래에 있음
- Cond4 - A의 아래쪽 모서리가 B의 위쪽 모서리보다 위에 있음
(Cond1 Or Cond2 Or Cond3 Or Cond4) == true
면 두 사각형은 절대 겹칠 수 없으며 False이면 겹치는 경우.이를 수식으로 표현하면
- Cond1 - RectA.Left > RectB.Right
- Cond2 - RectA.Right < RectB.Left
- Cond3 - RectA.Top < RectB.Bottom
- Cond4 - RectA.Bottom > RectB.Top
-
댓글 입력