Bootstrap

空间两条直线的最短距离及最近点计算

直线的信息可以以两个端点的形式给出,也可以以一个直线上的点和直线的方向向量给出。本文中假设这两条直线不共线,即这两条直线既不重合也不相交。

1.如果这两条直线是以两个端点的形式给出,那么假设直线l0的两端点为:P0、P1;直线l1的两端点为Q0、Q1,;求两直线的最短距离?

直线l0我们可以用方程表示为:

        (1)

直线段l1我们也可以用方程表示为:

            (2)

式中,P、Q分别表示两直线段上的点。

那么点P和点Q的距离为:

(3)

我们将(3)式等式两边平方得到:

               (4)

那么求解这两条空间直线段的最短距离就变成了一个求解最小二乘法的最小值问题了,即求解方程:

      (5)

那么这个方程怎么求解呢?下面我们来求解(5)式:由式(1)和式(2)我们有:

(6)

将(6)式带入(5)式有:

            (7)

那么就变为求解超静定方程:     (8)

我们将(8)式变形得到求解超静定方程:

           (9)

令A=(P0-P1,Q0-Q1),x=(a,-n)T,b=Q1-P1;则式(9)变为:

                 (10)

两边同时乘以矩阵A的装置得到:

                (11)

则x可以求解得到:

            (12)

求解得到a和n之后带入式(6)就可以求解得到点P和点Q了,然后代入式(3)就可以求解得到最小距离了。

2.如果这两条直线是以直线上的点和该直线的方向向量给出,那么假设直线l0上有一点P0,它的方向向量为n;直线l1上有一点Q0,它的方向向量为m;那么直线l0上的点可以表示为:

(13)

直线l1上的点可以表示为:

 (14)

点P和点Q的距离为:

 (15)

将式(13)和式(14)带入式(15)得到:

(16)

两边平方得到:

(17)

那么求解两条直线的最短距离,就变为了求解式(17)的最小二乘方程组,即:

   (18)

变形得到:

 (19)

同理,令A=(n,m),x=(a,-b)T,b=Q0-P0,则(19)式变为:

(20)

同理求得x为:

    (21)

求得a,b之后带入式(13)和式(14)就可以求得点P和点Q,根据式(15)就可以求得最短距离了。

;