2つの線分 L1とL2が重なっているか?を調べるための,python3によるプログラムを紹介します.
各線分については,Li (ai, bi )であらわすこととし,ここでai:始点,bi:終点とします.また ai < bi とします.
よって2つの線分L1とL2について,L1(a1, b1),L2(a2, b2) とあらわせます.
まず,以下の2つの値( S1 および S2 )を計算します.
S1 = ( a1 – a2 ) × ( b1 – b2 )
S2 = ( a1 – b2 ) × ( b1 – a2 )
この2つの値は,線分の状態により,以下の値をとります.
よって,重なりを判定する場合は,S1 > 0 and S2 < 0 の条件で調べれば良いことになります。
以下に、python3での実装例を示します。
L1 = [1,8]
L2 = [5,10]
S1 = (L1[0] - L2[0]) * (L1[1] - L2[1])
S2 = (L1[0] - L2[1]) * (L1[1] - L2[0])
if S1 > 0 and S2 < 0:
print(True)
else:
print(False)