计算两个未对齐的 3D 立方体/长方体之间的最小距离

问题描述 投票:0回答:1

给定两个不同旋转和尺寸的未对齐 3D 长方体,每个长方体由不同的顶点(p1、p2、p3、p4、p5、p6、p7、p8)定义,我如何找到长方体之间的最小距离?

我一直在研究一个简单的欧几里得 3D 距离算法,其中包含每个立方体的最小值和最大值,但它不适用于旋转的立方体。对于这个问题有没有什么整体的方法呢?在此图中,有两个立方体的两个示例以及我想要计算最小距离的可能位置:

img

algorithm 3d geometry distance
1个回答
0
投票

我没有看到捷径,所以我将根据暴力案例穷举来回答。这不是最快的方法,但却是一种非常强大的方法。

您正在寻找从立方体 A 中的点到立方体 B 中的点的最短连接线。在两端,这条最短的线肯定不会在立方体内部结束,而是在立方体的表面、边缘或顶点上(假设立方体不重叠)。所以你得到 9 个案例:

  • 顶点/顶点
  • 顶点/边
  • 顶点/曲面
  • 边/顶点
  • 边缘/边缘
  • 边缘/表面
  • 表面/顶点
  • 表面/边缘
  • 表面/表面

我们可以省略表面/表面的情况,因为只有表面彼此平行才可能,在这种情况下,使用边或顶点的其他情况将给出相同的距离。

对于每种情况,您都可以在网上找到一个计算(无限扩展)几何对象距离的公式,然后您应该检查是否停留在有限表面或边缘内。

最后,您可以返回有效距离的最小值。

当然,可以有很多优化,排除不能产生最短距离的情况,例如表面指向远离另一个立方体的方向,但这需要仔细分析。

© www.soinside.com 2019 - 2024. All rights reserved.