参数线和笛卡尔线之间的交点是多少?

时间:2013-04-21 09:40:09

标签: graphics 3d geometry linear-algebra

我有两条直线。

参数形式之一:

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类似。但是我对效率感兴趣而不是解决方案。

1 个答案:

答案 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)]