【发布时间】:2019-08-06 23:14:51
【问题描述】:
我目前正在尝试实现一个简单的连续碰撞检测系统。我想知道对于移动的 AABB 是否有可能在与凸多面体相交之前计算它可以在任意方向d 上平移的距离。这是2D的简单解释:
这里我想要的是绿线的长度(橙色的AABB是初始位置,红色的AABB是两个对撞机相交的位置)。
这也等价于尝试从原点向d 方向射线投射 minkowski 差 A⊕-B,其中 A 是我的静态凸多面体,B 是我的移动 AABB:
但是计算 minkowski 差异似乎真的很消耗性能,所以我想知道是否存在一种快速算法。
在谷歌搜索时,我看到了一种称为 GJK 的算法,但它似乎只返回整体最小距离,而不是方向距离。
提前感谢您的回答!
PS:请原谅我糟糕的英语和我完全缺乏使用绘画的艺术天赋。
【问题讨论】:
-
对于 2D,找到两条最近的边(一条在 aabb 上,一条在凸多边形上),然后使用公式计算两条线段之间的最近距离。该距离就是分离距离,最近的两个点就是碰撞点。
标签: collision-detection distance aabb convex