您的位置:首页 > 编程语言 > C语言/C++

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

2017-11-19 20:49 441 查看
  
如果这两条直线段不共线,假设直线段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之后,我们知道:

 

(·13)

所以,如果a小于0,那么a=0;如果a大于1,那么a=1;否则a不变;

如果n小于0,那么n=0;如果n大于1,那么n=1;否则n不变。

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

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐