我想在3D中找到2行的截距。我怎样才能检查它们是否真的拦截了我们最初计算真正的3D coorindate。然后我该如何计算该特定点的3D坐标?
其次,据我所知,如果两条线没有拦截,就不可能找到拦截点。因此,我想找到一种计算3d点的方法,该点与两点之间的最小距离。我有两个最小距离要求:
1.连接两点的最短距离,取中间点作为结果
2.找到距离两条线最短的垂直距离
有人可以给我一些提示吗?
答案 0 :(得分:1)
让第一行为P+u.U
,第二行为Q+v.V
,其中大写字母为3D向量。
您希望最小化(平方)距离,即
D²(u, v) = ((P+u.U) - (Q+v.V))²
然后,从u
和v
推导,得到方程组
D²'u(u, v) = 2U.D(u, v) = 0
D²'v(u, v) = 2V.D(u, v) = 0
或
U.P + U².u - U.Q - U.V.v = 0
V.P + U.V.u - V.Q - V².v = 0
解决2个未知数u
和v
中2个方程的线性系统,并从这些方程中得到最近的点。
在线条平行的特殊情况下,系统行列式U²V²-(U.V)²
为零,正如人们所期望的那样(实际上它是叉积(UxV)²
的平方)。您可以随意设置u=0
并解析v
。