Graphics 最近距离+;两个网格的顶点

Graphics 最近距离+;两个网格的顶点,graphics,cgal,Graphics,Cgal,我想找到两个网格的两个顶点(每个网格1个顶点),它们定义了它们之间的最近距离。或者两个三角形也可以 然而,我不确定如何在CGAL的文档中搜索,我确信使用一些现有的工具(可能基于3d距离场和/或AABBs)是可行的。我可以得到一个提示(关键字/链接)关于什么寻找 我已经被指向CGAL包,但它不是我想要的,因为它输出距离和坐标,所以查找顶点ID是一个额外的计算开销 我已经用CGAL实现了一个碰撞检测,使用AABB树在三角形汤中查找三角形交点。我想我应该在某种程度上接近这一点,尽管现在一个简单的汤加上

我想找到两个网格的两个顶点(每个网格1个顶点),它们定义了它们之间的最近距离。或者两个三角形也可以

然而,我不确定如何在CGAL的文档中搜索,我确信使用一些现有的工具(可能基于3d距离场和/或AABBs)是可行的。我可以得到一个提示(关键字/链接)关于什么寻找

我已经被指向CGAL包,但它不是我想要的,因为它输出距离和坐标,所以查找顶点ID是一个额外的计算开销


我已经用CGAL实现了一个碰撞检测,使用AABB树在三角形汤中查找三角形交点。我想我应该在某种程度上接近这一点,尽管现在一个简单的汤加上所有的对象三角形都不起作用。

找到的解决方案是:

CGAL的软件包可以给出两个网格的凸包之间最近距离的近似值,而无需显式计算凸包。因此,可以得到这些外壳之间的最短距离,以及位于它们上的两个点的坐标,并定义此距离

然后,这些坐标可以用作包含网格原始顶点的kd树中的搜索查询,以查找最近的顶点

如果一个网格是非凸的,CGAL使用的外壳非常近似,因此可能需要进行凸分解。在这种情况下,必须检查每个凸面部分的距离,然后取最短距离

上述情况会导致如下结果: