如果我在 3d 空间中得到两个直角棱柱的角点,其中一个以 (0,0,0) 为中心,一般来说,找到角点的优雅而有效的方法是什么重叠的直角棱镜,或者如果两个直角棱镜不重叠则什么都不返回?
最佳答案
我假设“重叠直角棱镜”是指两个棱镜的交点。另外,我假设它们是轴对齐的。
棱镜 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)
其中 ^
意思是“和”。
然后交集的 x 下界和上界由 max(xmina, xminb)
给出和 min(xmaxa, xmaxb)
, 对于 y 和 z 也是如此。
关于algorithm - 给定两个直角棱柱的角点,找到重叠直角棱柱的角点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34143553/