Rect_ 객체끼리 서로 &, | 연산자를 이용한 논리 연산을 수행할 수 있습니다. 두 개의 사각형 객체끼리 & 연산을 수행하면 두 사각형이 교차하는 사각형 영역을 반환합니다. 반면에 두 사각형 객체끼리 | 연산을 수행하면 두 사각형을 모두 포함하는 최소 크기의 사각형을 반환합니다. 다음 예제 코드를 확인하세요.
// rc3 = [50 x 40 from (0, 0)], rc4 = [60 x 40 from (20, 20)] Rect rc5 = rc3 & rc4; // rc5 = [30 x 20 from (10, 10)] Rect rc6 = rc3 | rc4; // rc6 = [80 x 60 from (0, 0)]
예제 코드의 동작을 쉽게 이해할 수 있도록 그림 3-1에 rc3, rc4, rc5, rc6을 각각 나타냈습니다. 앞서 적었던 코드에서 rc3은 (0, 0) 좌표에서 시작하는 50×40 크기의 사각형이고, rc4는 (20, 20) 좌표에서 시작하는 60×40 크기의 사각형입니다. 그림 3-1에서 rc3과 rc4 사각형은 붉은색으로 표시했습니다. 이 두 사각형에 대해 & 연산을 수행하면 사각형이 겹치는 영역이 반환되며, 이는 그림 3-1(a)에서 녹색으로 그려진 사각형 영역입니다. 그러므로 rc5는 (20, 20) 좌표에서 시작하는 30×20 크기의 사각형입니다. rc3과 rc4 두 사각형에 대해 | 연산을 수행하면 두 사각형을 모두 포함하는 최소 크기의 사각형이 반환되며, 이는 그림 3-1(b)에서 녹색으로 그려진 사각형입니다. 즉, rc6은 (0, 0) 좌표에서 시작하는 80×60 크기의 사각형이 됩니다.
▲ 그림 3-1 Rect_ 클래스의 논리 연산 결과 예