2つの長方形(四角形)が、重なっているか?を、python3で、判定する方法を紹介します。

長方形であるかの判定

 まず最初に、ある図形が長方形であるかを判定する方法を、以下の図1を元に説明します。

(図1)長方形

図1では、長方形と2つの頂点 (x1, y1) および (x2, y2) を示しています。
この2点を以下のように利用すれば、長方形であるかを判定できます。


if (x1 < x2) and (y1 < y2):
    print('Yes Rectangle!')
else:
    print('No')

これを利用すれば、目的である2つの長方形の重なり判定を実行することができます。

2つの長方形の重なり判定

2つの長方形が重なっている状況を図2で示します。

(図2)重なる2つの長方形

2つの長方形が重なっていれば、重なっている部分は新たな長方形として考えることができます。また、ここでは、2つの長方形が接する場合は考慮していません。

よって図2に示した、赤色の4つの頂点を利用して、それが長方形であるかを判定すれば、2つの長方形が重なっているかを判定することになります。

赤色の4つの頂点は、min( ) および max( ) を用いて以下のように示すことができます。

(1)上辺について: min(y2, y4)

(2)右辺について: min(x2, x4)

(3)左辺について: max(x1, x3)

(4)底辺について: max(y1, y3)

よって以下のように、上記のコードを変更すれば、長方形の重なり判定ができます。

if (max(x1, x3) < min(x2, x4)) and (max(y1, y3) < min(y2, y4)):
    print('Yes Overlap!')
else:
    print('No')