线段求交

给出两条线段 (a_1, b_1), (a_2, b_2) 求交点坐标

[vec a = b_1 - a_1 ]

[vec b = b_2 - a_2 ]

线段 ((a_1, b_1)) 上任意一点坐标可以表示为 (a_1 + ta)
同理 ((a_2, b_2)) 上任意一点坐标可以表示为 (a_a + ub)
(t, u) 是一个系数
让两个线段方程相等

[a_1 + ta = a_2 + ub ]

同时叉乘 (b)

[a_1b + tab = a_2b + ubb ]

因为 (bb = 0)

[tab = a_2b - a_1b ]

[t = frac{(a_2 - a_1) b} {ab} ]

交点点坐标就是 (a_1 + ta)

原文地址:https://www.cnblogs.com/XiaoVsun/p/13054065.html