我有两条直线。
参数形式之一:
L1 = {
(x = x1 + t.a1),
(y = y1 + t.b1),
(z = z1 + t.c1)
}
另一个是笛卡尔线段:
L2 = {
(px1, py1, pz1),
(px2, py2, pz2)
}
找到两条线的交点是什么有效的方法?
我能想到的方法是:
然而,有更有效的方法吗?此问题与https://math.stackexchange.com/questions/28503/how-to-find-intersection-of-two-lines-in-3d类似。但是我对效率感兴趣而不是解决方案。
答案 0 :(得分:0)
让 d1 是第一行的方向向量, d2 是第二行的方向向量, bb 是基点之间的向量(的 BB = B2-B1 强>)。
设 p =(d1 x d2)(矢量积)。如果 p 为零向量,则行是平行的。
然后你需要检查线是否相交:( bb * p )应该是= 0(标量积)。否则这些线是倾斜的。
交点是 i = b1 + d1 * [(bb x d2)* p /(p * p)]