如果我得到了三维空间中两个矩形棱柱的角点,其中一个以(0,0,0)为中心,一般来说,找到重叠矩形棱柱的角点是一种优雅而有效的方法,或者如果两个矩形棱柱不重叠,什么也不返回?
最佳答案
我假设“重叠矩形棱镜”是指两个棱镜的交集而且,我假设它们是轴对齐的。
用[xmina, ymina, zmina]
表示棱镜A的下界,用[xminb, yminb, zminb]
表示棱镜B的下界类似地,将上界表示为[xmaxa, ymaxa, zmaxa]
和[xmaxb, ymaxb, zmaxb]
。
当且仅当max(xmina, xminb) < min(xmaxa, xmaxb) ^ max(ymina, yminb) < min(ymaxa, ymaxb) ^ max(zmina, zminb) < min(zmaxa, zmaxb)
时交叉点为非空,其中^
表示“和”。
然后通过max(xmina, xminb)
和min(xmaxa, xmaxb)
给出交叉点的x上界和x下界,类似于y和z。