我找不到“蜘蛛和苍蝇问题”的通用解决方案(长方体表面两点之间的最短路径)每个人都能解决一个具体的问题,但当两点可以在任何地方时呢?
我的想法是创建一个算法,考虑一个长方体的各种网络,计算2D上的最短路径,然后返回最小值,但我不知道该算法生成这些网格(我想硬编码所有组合不是最好的方法)。

最佳答案

将立方体结构展平为二维,如下所示。。。
从包含两点之一的面开始如果这也包含了另一点,那么您可以到此为止,解决方案很简单。
只有4张相邻的脸。如果其中任何一个点包含另一个点,则可以将该面放置在第一个点附近,并绘制直线,如下所示。
如果你到了这里,那么点在相对的面上您需要尝试将最后一个面与4个相邻面的每个面相邻,并从4个备选方案中选择最短的一个。
对第2点进行修正,从而得出通用解决方案,取代上述方法。这种方法需要考虑身体的中心在哪里。Jim-Propp的surface distance conjecture是,对于中心对称凸紧体,两点之间的最大表面距离仅对于穿过中心的对我的推测是,最短的距离是由两点构成的平面和物体的中心与表面相接的地方。因此,您只需要使用三维几何体找到该平面与面相交的位置。
此解决方案更通用,并且还满足点位于同一个面和相反面上的场景。
这种方法的唯一问题是两点之间的线穿过身体的中心…

10-08 04:04