【发布时间】:2014-03-20 20:36:32
【问题描述】:
我有两条位于同一平面上的 3D 线。 line1 由一个点 (x1, y1, z1) 及其方向向量 (a1, b1, c1) 定义,而 line2 由一个点 (x2, y2, z2) 及其方向向量 (a2, b2, c2) 定义。那么两条线的参数方程是
x = x1 + a1*t; x = x2 + a2*s;
y = y1 + b1*t; y = y2 + b2*s;
z = z1 + c1*t; z = z2 + c2*s;
如果两个方向向量都是非零的,我们可以通过将上面等式的右侧相等并从三个中的任何两个求解t 和s 来轻松找出相交节点的位置。但是,a1 b1 c1 a2 b2 c2 可能并非全部非零,因此我无法以相同的方式求解这些方程。我目前的想法是逐案处理这个问题,比如
case1: a1 = 0, others are nonzero
case2: a2 = 0, others are nonzero
case3: b1 = 0, others are nonzero
...
但是,总共有这么多案例,实施起来会变得混乱。有什么好的方法可以解决这个问题吗?有什么参考吗?非常感谢!
【问题讨论】:
-
为什么不通过投影到平面上来表示线条?否则,您似乎正在尝试解决三个空间中的线交点。 (注意两个向量的叉积应该给你一个平面的法线向量,用它来做投影)
-
听起来像矩阵的情况......
-
等一下,给出了哪些信息来寻找交点的坐标?我的意思是,
x1、y1、...、c2等等 -
@SteveCox 将线条投影到平面上是什么意思?你指的是哪架飞机?我知道两条线所在平面的法线向量。
-
@ThoAppelsin 这就是我唯一的...
标签: c line-intersection