【问题标题】:What is the point of intersection between a parametric and a cartesian line?参数线和笛卡尔线的交点是什么?
【发布时间】:2013-04-21 23:54:00
【问题描述】:

我有两条直线。

参数形式的一个:

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

【问题讨论】:

    标签: graphics 3d geometry linear-algebra


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 谢谢 - 我已经考虑过这一点,但是从运算次数来看,这同样无效,除非我使用并行计算进行矩阵乘法。事实上,我有这两种解决方案的组装转储。方向矢量解决方案更庞大(但是我在第二个解决方案中使用了非 SSE BLAS,我猜这会增加一些开销)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-17
    相关资源
    最近更新 更多