检查两个移动的AABB是否相交的最快方法是什么?

时间:2015-01-28 14:55:46

标签: collision-detection

我有两个正在移动的AABB,检查它们是否会在一帧下交叉的最快方法是什么?

通过移动我的意思不仅仅是检查通常的矩形交集方法,我的意思是某种简单的简单扫描测试,只返回布尔值,没有命中时间或其他任何东西。

我认为只需这样做:

This

但Hexagon非常复杂,我不知道如何计算AABB - 多边形交叉点,是否有更简单的方法?

您最喜欢的任何编程语言,我都可以轻松移植它。

感谢。

1 个答案:

答案 0 :(得分:0)

如果您将生成的形状视为两个rects(A的原始位置和A&#39的最终位置)和一个倾斜的矩形(由运动给出)的并集,则可以简化问题。 由于我的声誉,我无法发布图片,所以我只是留下一个图片链接来解释我的意思: http://i.imgur.com/aRQCe9i.png

然后你必须评估以下任何形状是否与B碰撞:

  • A对B的原始位置(AABB - AABB碰撞)
  • A对阵B的最终位置(AABB - AABB再次碰撞)
  • B方向的偏斜矩形(OBB碰撞)

对于最后一种情况,您可以使用分离轴定理,它将起作用,因为生成的形状应该始终是凸的。

如果您想知道哪些点应该用于凸形,我建议使用与移动方向相匹配的点(即如果矩形向上和向左移动,请选择与原始位置的左上角相邻的两个点和与最终位置的右下角相邻的两个点),具有正交移动的特殊情况。