两空间线段最短距离计算

       本文中向量 叉乘用 x 表示 点乘用 * 表示

一、首先计算两根三维空间中的线段距离:

      见上图,假设两线段分别为PQ和ST,线段UV为其最短距离所在的直线上,UV的长度为两线段间的最短距离。

判断两线段是共面还是异面

     先获取两线段PQ及ST的法向量 PUB=PQ x ST(叉乘)

     再计算d=PUB*UV(点积)来判断两线段(所在直线)是否共面,若d=0则共面反之异面。

分情况讨论

①异面时有

      distance=PUB*UV/|PUB|,取distance的绝对值即为两线段间的最短距离。

②共面时可计算某一条线段上的两个端点到另一条线段的最短距离即可(此种计算也包括了两线段平行的情况)

       如上图所示,绿色箭头为最短距离所处的线段,AB为一条线段的两个端点形成的向量AB,P为另一条线段的一个端点,分别代表在线段AB上,线段BA的延长线上,以及线段AB的延长线上。

       以上情况均有向量AD=r*AB,

        ∴ |AD|=|r|*|AB|

        又|AD|=|AP|*cos<AP,AD>=AP*AB/|AB|,

        cos<AP,AD>=±(AP*AB)/|AP||AB|(上图第二种情况时为-)

        又AD为向量AP在向量AB上的投影(上图第二种情况取反)

        ∴|AD|=AP*AB/|AB|,

        可得 r=AP*AB/|AB|²

         当r<0时,最短距离为AP,r>1时,最短距离为BP,否则为PD。

         其中|PD|=|AP|*sin<AP,AB>=|AP x AB|/|AB|

判断直线是否共线_yangyoung4ever的博客-CSDN博客

三维空间异面直线最短距离计算_用叉乘计算异面直线的最短距离_yangyoung4ever的博客-CSDN博客

版权声明:本文为博主作者:yangyoung4ever原创文章,版权归属原作者,如果侵权,请联系我们删除!

原文链接:https://blog.csdn.net/yangyoung4/article/details/129067104

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
心中带点小风骚的头像心中带点小风骚普通用户
上一篇 2024年4月22日
下一篇 2024年4月22日

相关推荐