Quick way to avoid intersections: bound complex object with a simple volume

对于一个复杂的物体,可以用一个相对简单的形状包起来。

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/8038d5a4-f3ff-42c9-93fa-e451fb9e770e/Untitled.png

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/9cce5a9a-b6f4-44a3-8412-30bd066b0ea6/Untitled.png

我们可以把长方体理解为三个不同的对面形成的交集:前面和后面、左面和右面、上面和下面,每个面都是无限大的平面。

我们通常用的包围盒都是轴对齐包围盒(AABB),轴对齐指的是每个面对的要么是 xy平面、yz平面和 xz 平面。

<aside> 💡 光线怎么和包围盒求交

</aside>

对于二维如何求交

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/a015a6b1-c25f-49a5-b654-a15afb692935/Untitled.png

对两个线段求交集,得到光线进入盒子的时间。对于 3D 的情况:

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/199acc84-540d-47ff-8a15-1406d207c268/Untitled.png

iff:当且仅当