正文

空间中三角形到三角形的最短距离求法以及一些思考2009-10-02 13:32:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/yuqiexing/48811.html

分享到:

   根据上一节线段到三角形的最短距离的证明,我想我们可以大致可以想象出两个三角形的最短距离如何求解了。

 

1)三角形S1每条边到S23个最短距离。

2)三角形S2每条边到S13个最短距离。

 

  将这6个距离进行比较,最小的就是两个三角形的最短距离。

 

   扩展一下。由于一般的简单几何体均可以拆成三角形构成,那么两个简单几何体的距离也是在理论上可以求得的。不过实际操作中,不能采用三角形遍历求距离的方法,效率太低下了。作者会在后续的章节中继续探讨两个几何体最短距离的求解方法。

 

   下面谈点思路。纵观前2节“空间中线段到线段的最短距离”,“空间中线段到三角形的最短距离”,我们可以发现,我们的求解方案有一些相同的地方。假设求空间基本对象A和空间基本对象B的最短距离,那么我们会首先拆分A为其一级子对象集合,然后求出每个子对象到B的最短距离;同时,拆分B为其一级子对象集合,求出每个子对象到A的最短距离。最后将所有的距离进行比较得到最小值,就是最短距离。举个例子来说明一级子对象。例如多边形由线段构成,那么线段是多边形的一级子对象;线段由点构成,那么点是线段的一级子对象。所以,在求解“空间中线段到线段的最短距离”时,我们会涉及到求点到线段的最短距离;在求解“空间中线段到三角形的最短距离”,会求线段到三角形每条边的最短距离,会求三角形到线段上每个端点的最短距离。当然也要考虑一些特殊情况。由于所有基本对象最终的最底层子对象就是点,而两点之间的距离是可得的,那么任意基本对象的最短距离也都是可以计算的。

 

    

    谈点技术。如果任意2个几何体的最短距离我们都可以求得,那么相交测试以及所谓的碰撞检测那就相当简单了。只要最短距离等于0,那么肯定相交;反之不相交。但是求距离有时候是很困难,很费时的一件事情,而相交检测则要简单一些。常见的分离轴检测,separating axies test就比求距离要简单一些。作者会在后续章节中继续介绍。但是某些情况下,利用求距离的思想来检测相交,是很方便的一件事情,尤其是涉及到球和胶囊体的时候。球是点在半径范围内的缓冲区,而胶囊体是线段在半径范围内的缓冲区。例如要检测三角形和胶囊体是否相交,那么只要求出三角形到胶囊体轴线段的最短距离即可。

 

        


 

   并且我们还可以发现,我们求得所有的最短距离点对,如果组成一个向量,那么该向量要么垂直于基本对象所在某个平面(如三角形平面),如点到三角形的最短距离点对;要么垂直于两个基本对象,如公垂线。由此一点,我们可以引出后续的分离轴理论。

 

阅读(3970) | 评论(3)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

loading...
您需要登录后才能评论,请 登录 或者 注册