2つの線分 L1L2が重なっているか?を調べるための,python3によるプログラムを紹介します.

 各線分については,Li (ai, bi )であらわすこととし,ここでai:始点,bi:終点とします.また ai < bi とします.

よって2つの線分L1L2について,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)