1. 程式人生 > >空間兩條直線的最短距離及最近點計算

空間兩條直線的最短距離及最近點計算

直線的資訊可以以兩個端點的形式給出,也可以以一個直線上的點和直線的方向向量給出。本文中假設這兩條直線不共線,即這兩條直線既不重合也不相交。

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)就可以求得最短距離了。