Java 如何计算一个长方体与其相邻长方体的接触面积

Java 如何计算一个长方体与其相邻长方体的接触面积,java,3d,java-3d,area,Java,3d,Java 3d,Area,我试着把不同大小的长方体放在一起,这样它们之间的接触面积就最大化了 以一种蛮力的方式,我在寻找一个可能的位置,让每个长方体在不与任何其他长方体相交的空间中定位。我使用Java3D的类实现了这一点,在这个类中,可以检查给定的框是否与给定的其他框集合相交。现在我得到了许多可能的位置,我需要从中选择与其他盒子接触面积最大的位置 我的问题是我不知道如何有效地计算这个面积。一个小例子 框1:左下点x=0,y=0,z=0;右上角点x=10,y=10,z=10 框2:左下点x=10,y=0,z=0;右上角点x

我试着把不同大小的长方体放在一起,这样它们之间的接触面积就最大化了

以一种蛮力的方式,我在寻找一个可能的位置,让每个长方体在不与任何其他长方体相交的空间中定位。我使用Java3D的类实现了这一点,在这个类中,可以检查给定的框是否与给定的其他框集合相交。现在我得到了许多可能的位置,我需要从中选择与其他盒子接触面积最大的位置

我的问题是我不知道如何有效地计算这个面积。一个小例子

框1:左下点x=0,y=0,z=0;右上角点x=10,y=10,z=10

框2:左下点x=10,y=0,z=0;右上角点x=15,y=5,z=5

框3的尺寸与框1相同,且应以最大接触面积放置

在本例中,框3一侧与框1右侧(框2所在位置)以外的任何位置匹配的所有位置都是最优解

如果有人有想法,甚至有解决办法,我会非常高兴。我也很高兴有免费的图书馆,如果它们不是太大的话


谢谢

依次考虑每一对潜在的接触面

将框2放置在与框1接触的任何位置。然后递归搜索。对于每个位置,确定所有相交长方体,然后找到上、下、左、右移动的最小值,以防止与其中一个相交长方体相交。这将建立四个新的搜索位置。然后,你也可以通过这些方法进行锻炼

为了澄清这一点,如果要向左移动,则会找到相交长方体的最右侧左侧面,并移动以使该面不再相交。其他长方体可能仍会相交,但我们将递归地远离它们

如果没有交叉口,则有一个停车位置,并记录该区域并进行搜索

如果一次移动使你无法接触到原来的盒子,你就不会沿着这条路线进一步探索

对于每个面,您可以发现要么没有可能的位置,要么至少有一个面具有最大接触面积

然后对其他5个面重复此过程