在高中二年級時,我們學到矩陣(線性代數)的基本用法,包括怎麼用克拉瑪公式快速求兩線段交點。
首先我們要知道如何用兩點定一條直線方程式ax + by = c :
設一點為(x1, y1),另一點為(x2, y2),直線L可以寫成(y1 - y2)x + (x2 - x1)y = x2*y1 - x1*y2。
題目說有兩條直線L1、L2,列出L1 = a1x + b1y = c1,L2 = a2x + b2y = c2。
帶入四個點可得a1 = (y1 - y2)、b1 = (x2 -x1)、c1 = (x2*y1 - x1*y2)、a2 = (y3 - y4)、b2 = (x4 -x3)、c2 = (x4*y3 - x3*y4)。
有了兩條線的方程式就可以輕鬆解出交點了,設行列式Δ = (a1*b2 - a2*b1)、ΔX = (c1*b2 - c2*b1)、ΔY = (a1*c2 - a2*c1)。
如果Δ不為0,代表兩直線不平行,交於((ΔX / Δ), (ΔY / Δ))。
如果Δ為0,代表兩直線平行,其中如果ΔX和ΔY都為0,代表重疊,如果ΔX或ΔY至少一個不為0,代表不相交的平行。