本文中向量 叉乘用 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博客文章来源:https://www.toymoban.com/news/detail-595338.html
三维空间异面直线最短距离计算_用叉乘计算异面直线的最短距离_yangyoung4ever的博客-CSDN博客文章来源地址https://www.toymoban.com/news/detail-595338.html
到了这里,关于两空间线段最短距离计算的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!