PythonのSympyを使って2点を結ぶ2本の線分の交点の座標をベクトルを使って計算する
import numpy import sympy #点p1と点p2を結ぶ線分と点p3と点p4を結ぶ線分の交点を求める def intersection(p1, p2, p3, p4): #各点をベクトルで表す a1 = numpy.array(p1) a2 = numpy.array(p2) a3 = numpy.array(p3) a4 = numpy.array(p4) #方程式で使う変数の準備 k = sympy.Symbol('k') t = sympy.Symbol('t') #点p1と点p2を通るベクトル方程式 vec1 = a1 + k * (a2 - a1) #点p3と点p4を通るベクトル方程式 vec2 = a3 + t * (a4 - a3) eq1 = sympy.Eq(vec1[0], vec2[0]) eq2 = sympy.Eq(vec1[1], vec2[1]) s = sympy.solve((eq1, eq2)) return (a1 + s[k] * (a2 - a1)) print(intersection((2,7),(6,1),(2,3),(6,5)))