给定两个直角棱柱的角点,找到重叠直角棱柱的角点

Given the corner points of two rectangular prisms, find the corner points of the overlapping rectangular prism

如果我在 3d space 中给出两个直角棱镜的角点,其中一个以 (0,0,0) 为中心,一般来说,什么是优雅高效的如何找到重叠直角棱镜的角点,或者如果两个直角棱镜不重叠则什么都不返回?

我假设 'the overlapping rectangular prism,' 是指两个棱镜的交点。另外,我假设它们是轴对齐的。

让棱镜 A 的下界用 [xmina, ymina, zmina] 表示,棱镜 B 的下界用 [xminb, yminb, zminb] 表示。同样,将上限表示为 [xmaxa, ymaxa, zmaxa][xmaxb, ymaxb, zmaxb].

交集非空当且仅当 max(xmina, xminb) < min(xmaxa, xmaxb) ^ max(ymina, yminb) < min(ymaxa, ymaxb) ^ max(zmina, zminb) < min(zmaxa, zmaxb) 其中 ^ 表示 'and'.

然后交集的 x 下界和上界由 max(xmina, xminb)min(xmaxa, xmaxb) 给出,对于 y 和 z 也是如此。