我们在太空中有许多平行六面体,所有边都平行于轴。每个平行六面体的特征在于6个整数值,即其两个顶点的坐标
(x1; y1; z1); (x2; y2; z2) with x1 < x2; y1 < y2 and z1 < z2;
我必须找到两个或多个平行六面体同时占用的总体积。
答案 0 :(得分:2)
让我们首先考虑对所有长方体的体积求和,同时只考虑重叠区域一次。
您可以使用由所有长方体的起点和终点组成的新网格覆盖您的空间。然后,您可以根据该网格有效地将所有长方体切割成子长方体,如下所示(对于矩形):
例如,图像中的右下方矩形由六个不相交的子矩形组成,其体积可以单独计算。
所以:
当您想要获得重叠子长方体的体积时,您可以构建一个长方体交叉点列表并对其进行处理,或者您可以将标记数组设为一个计数数组,并仅对其计数的子卷求和至少是2。
上述方法适用于任意坐标值,甚至是浮点数。如果您的长方体仅限于小范围内的整数,则可以不使用新网格,只需使用自然整数网格作为&#34;体素&#34;。