给定两个不同旋转和尺寸的未对齐 3D 长方体,每个长方体由不同的顶点(p1、p2、p3、p4、p5、p6、p7、p8)定义,我如何找到长方体之间的最小距离?
我一直在研究一个简单的欧几里得 3D 距离算法,其中包含每个立方体的最小值和最大值,但它不适用于旋转的立方体。对于这个问题有没有什么整体的方法呢?在此图中,有两个立方体的两个示例以及我想要计算最小距离的可能位置:
我没有看到捷径,所以我将根据暴力案例穷举来回答。这不是最快的方法,但却是一种非常强大的方法。
您正在寻找从立方体 A 中的点到立方体 B 中的点的最短连接线。在两端,这条最短的线肯定不会在立方体内部结束,而是在立方体的表面、边缘或顶点上(假设立方体不重叠)。所以你得到 9 个案例:
我们可以省略表面/表面的情况,因为只有表面彼此平行才可能,在这种情况下,使用边或顶点的其他情况将给出相同的距离。
对于每种情况,您都可以在网上找到一个计算(无限扩展)几何对象距离的公式,然后您应该检查是否停留在有限表面或边缘内。
最后,您可以返回有效距离的最小值。
当然,可以有很多优化,排除不能产生最短距离的情况,例如表面指向远离另一个立方体的方向,但这需要仔细分析。