1 前言
继前面文章Lattice所讲常用的碰撞检测算法AABB、OBB,本文用C++简易实现,用visualizations_msgs可视化碰撞检测的效果
AABB通常用于粗检测,快速剔除不可碰撞的对象;OBB是更精确的碰撞检测算法
Bounding Box
2 AABB碰撞检测流程
- 首先,确定两个包围盒,分别为A,B
- 对于每个包围盒,检查它们在每个坐标轴的投影是否重叠
- 如果两个包围盒在每个坐标轴上的投影有重叠,那么它们就可能发生碰撞,需要进一步检查
- 进一步检查需要判断A包围盒的顶点是否在B内部,有,那么发生碰撞
- 如果两个包围盒的顶点都没有在另一个包围盒的内部,也可能发生碰撞,需要进行更加精细的检查
- 更精细的检查需要用更高级的算法,例如分离轴定理
3 AABB代码实现