내 코드에 무엇이 문제가 있는지 파악하는 데 많은 어려움을 겪고 있습니다. 사실, 두 개의 사각형이 겹치는 문제를 해결하는 데 매우 힘든 시간을 보내고 있습니다. 다음 코드한다 이론적으로 다음과 같은 직사각형 일 :두 개의 겹치는 사각형
Rect1 (2.5, 4)의 폭 = 2.5, 높이 = 43
Rect2 (1.5, 5)의 폭 = 0.5, 높이 = 3
이 문제를 해결하기 위해 Rectangle 클래스를 사용할 수 없습니다. 내가 한 것은 왼쪽 및 오른쪽 가장자리의 x 값과 두 사각형의 위쪽 및 아래쪽 가장자리의 y 값을 계산합니다.
제가 처음으로 고려한 것은 - 가능한 모든 경우를 다루지는 않습니다 - r2가 r1 내에있는 시나리오입니다.
(x1, y1) 및 (x2, y2)는 각각 직사각형 1 및 2의 중심을 나타냅니다.
right1 = x1 + w1/2;
left1 = x1 - w1/2;
bottom1 = y1 - h1/2;
top1 = y1 + h1/2;
right2 = x2 + w2/2;
left2 = x2 - w2/2;
bottom2 = y2 - h2/2;
top2 = y2 + h2/2;
overlap = ( (right2 < right1 && right2 > left1) &&
(bottom2 > bottom1 && bottom2 < top1) &&
(left2 > left1 && left2 < right1) &&
(top2 < top1 && top2 > bottom1));
다시 말하지만,이 시나리오가 모든 것을 포괄하지는 않습니다. 그러나 심지어 하나의 사각형이 위의 Rect1 및 Rect2 값을 입력으로 사용하여 하나의 사각형 안에 있는지 테스트하는 경우에도 overlapped는 false로 평가되지만 ... 은이 아니어야합니다. 작동해야합니다. 나는 무엇을 잘못 했는가?
"이 문제를 해결하기 위해 Rectangle 클래스를 사용할 수 없다는 것을 명심하십시오."제출하지 말고 코드를 사용하여 알려진 작동 구현과 비교하십시오. 이 문제를 파악하는 데 도움이 될 수 있습니다. –
변수 이름이 아주 산발적이거나 혼란 스럽습니다. 어쩌면 당신이 그들을 통과하고 더 좋은 이름을 골랐다면, 당신은 약간의 계산 문제를 발견 할 수 있습니다. – byxor
@BrandonIbbotson 내 변수 이름이 너무 혼란 스럽습니까? 왼쪽/오른쪽/위/아래는 직사각형의 가장자리를 나타내며이 값에 대한 계산은 코드 블록 위에 표시됩니다. X1, Y1, X2, Y2는 중심이고, W1, H1, W2, H2는 각각 너비와 높이입니다. – AleksandrH