0

我有两条直线。

参数形式之一:

L1 = {
  (x = x1 + t.a1),
  (y = y1 + t.b1),
  (z = z1 + t.c1)
}

另一个是笛卡尔线段:

L2 = {
  (px1, py1, pz1),
  (px2, py2, pz2)
}

找到两条线的交点的有效方法是什么?

我能想到的方法是:

  • 将 L2 转换为参数形式
  • 求解点 P
  • 找出 P 是否在 L2 上

但是有没有更有效的方法?这个问题类似于https://math.stackexchange.com/questions/28503/how-to-find-intersection-of-two-lines-in-3d。但是,我对效率而不是解决方案感兴趣。

4

1 回答 1

0

让我们d1是第一行的方向向量,d2是第二行的方向向量,bb是基点之间的向量(bb=b2-b1)。

p = (d1 x d2)(向量积)。如果p是零向量,则线是平行的。

然后您需要检查线是否相交: ( bb * p ) 应该 = 0 (标量积)。否则这些线是倾斜的。

交点是i = b1 + d1 * [ (bb x d2) * p / (p * p) ]

于 2013-04-21T14:07:20.523 回答