我需要100%正确的frustrum aabb相交测试用于截头剔除。以下链接解释了为什么大多数实现在100%正确测试时失败并提供解决方案。
http://iquilezles.org/www/articles/frustumcorrect/frustumcorrect.htm
然而,这个解决方案是不是100%正确?你能想到一个失败的案例吗?我想我可以,但很难解释。如果您认为这不起作用,您能提供更好的解决方案吗?
答案 0 :(得分:2)
你是对的,给定的解决方案不是100%正确。
他所要做的就是所谓的分离轴定理(或Hyperplane separation theorem)。
在上半场,他测试由平截头体的平面定义的轴,在下半部分,他测试由AABB定义的轴。这是正确的,也是SAT考试所必需的。
他缺少的是由边缘对的叉积定义的轴,每个多面体有一个。 AABB有3个独特的边(具有唯一方向的边)和平截头体有6个独特的边缘。因此,代码缺少3 * 6 = 18可能分离轴的重叠测试。
给定轴的单个重叠测试如下所示: