碰撞检测是物理引擎的第一个环节,负责回答"谁和谁碰上了"。核心挑战在于:逐对检测 O(n²) 的复杂度不可接受,必须通过**宽相(快速排除)+ 窄相(精确检测)**两阶段,配合空间加速结构,将复杂度降至近似 O(n log n)。
一、碰撞检测:宽相 + 窄相
逐对检测所有物体是 O(n²),不可接受。所以分两阶段:
宽相(Broad Phase)
用包围体 + 空间加速结构快速筛出"可能相碰"的候选对:
| 结构 | 说明 |
|---|---|
| AABB | 轴对齐包围盒,相交测试极快 |
| BVH(层级包围体) | 树形组织包围盒,O(log n) 查询 |
| Sweep and Prune | 沿轴排序端点,增量更新,适合帧间连续 |
| 空间哈希 / 网格 | 均匀网格分桶,适合均匀分布 |
