【问题标题】:How to calculate area of contact of one rectangular cuboid to its adjacent cuboids如何计算一个长方体与其相邻长方体的接触面积
【发布时间】:2011-05-29 04:14:23
【问题描述】:

我正在尝试将不同大小的长方体彼此相邻放置,以使它们之间的接触面积最大化。

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

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

方框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 所在的位置)之外的任何位置匹配的所有位置都是最优解。

如果有人有想法甚至解决方案,我会很高兴。如果免费图书馆不太大,我也很满意。

谢谢!

【问题讨论】:

    标签: java 3d java-3d area


    【解决方案1】:

    依次考虑每对可能的接触面。

    将框 2 放置在与框 1 接触的任何位置。然后递归搜索。对于每个位置,您识别所有相交的长方体,然后找到最小的向上、向下、向左和向右移动,以防止与其中一个相交的长方体相交。这建立了四个新的搜索位置。然后,您也可以从中解决问题。

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

    如果没有交叉路口,您有一个停车位置,然后记下该区域并继续搜索。

    如果移动使您无法触摸到原来的盒子,您就不会沿着该路线进一步探索。

    对于每张脸,您会发现要么没有位置是可能的,要么至少有一个与那张脸有最大的接触。

    然后您对其他 5 个面重复该过程。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-16
      相关资源
      最近更新 更多