2つの長方形(四角形)が、重なっているか?を、python3で、判定する方法を紹介します。
長方形であるかの判定
まず最初に、ある図形が長方形であるかを判定する方法を、以下の図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に示した、赤色の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')