给定两个直角棱柱的角点,找到重叠直角棱柱的角点
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 也是如此。
如果我在 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 也是如此。