>백엔드 개발 >C++ >두 개의 직사각형이 겹치나요?

두 개의 직사각형이 겹치나요?

Patricia Arquette
Patricia Arquette원래의
2024-12-19 20:29:20607검색

Do Two Rectangles Overlap?

직사각형의 겹침 확인

평행 직사각형이 존재하는 시나리오에서 중요한 작업은 겹치는지 확인하는 것입니다. 제공된 코드 조각은 이 목적을 위한 알고리즘을 구현하려고 시도하지만 추가 설명이 필요합니다.

겹침을 효과적으로 평가하기 위해 다음 수학적 조건을 활용할 수 있습니다.

if (RectA.Left < RectB.Right && RectA.Right > RectB.Left
    && RectA.Top > RectB.Bottom && RectA.Bottom < RectB.Top)

직교 좌표에서 , 이는 다음과 같이 번역됩니다.

if (RectA.X1 < RectB.X2 && RectA.X2 > RectB.X1
    && RectA.Y1 > RectB.Y2 && RectA.Y2 < RectB.Y1)

이를 분석해 보겠습니다. 세부 정보:

  • 조건 1: 직사각형 A의 왼쪽 가장자리가 직사각형 B의 오른쪽 가장자리 왼쪽에 있는 경우 A는 B의 오른쪽에 완전히 있지 않습니다.
  • 조건 2: 직사각형 A의 오른쪽 가장자리가 직사각형의 오른쪽에 있는 경우 B의 왼쪽 가장자리에 있는 경우 A는 B의 완전히 왼쪽에 있지 않습니다.
  • 조건 3: 직사각형 A의 위쪽 가장자리가 직사각형 B의 아래쪽 가장자리 위에 있으면 A는 B의 완전히 아래에 있지 않습니다.
  • 조건 4: 직사각형 A의 아래쪽 가장자리가 직사각형 아래에 있는 경우 B의 상단 가장자리에 있으면 A는 B보다 완전히 위에 있지 않습니다.

AND 연산자를 사용하여 이러한 조건을 결합함으로써 네 가지 조건이 모두 동시에 충족되도록 보장합니다. 이는 두 개의 직사각형이 겹치는 데 필요한 충분 기준을 설정합니다.

참고: 이 방법은 임의의 차원으로 확장될 수 있으므로 직사각형이 아닌 개체와 관련된 다양한 사용 사례에 적용할 수 있습니다. 또한 비교 연산자를 조정하여 조건을 수정하여 필요에 따라 부분 또는 전체 중복 시나리오를 결정할 수 있습니다.

위 내용은 두 개의 직사각형이 겹치나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.