定向框(或OBB)之间的交叉点

时间:2017-07-20 20:42:26

标签: algorithm collision-detection separating-axis-theorem

我正在尝试编写一个刚体模拟器,并且在模拟过程中,我不仅对找到两个物体是否发生碰撞感兴趣,而且还感兴趣的是碰撞的点和正常。我发现了很多资源,实际上是说两个OBB是否在使用分离轴定理发生碰撞。我也对OBB的3D表示感兴趣。现在,如果我知道两个碰撞OBB的重叠区域最小的轴,有没有办法找到碰撞点和碰撞法线?此外,还有两种主要的碰撞情况,第一种是点面和第二种边缘。 我试图谷歌这个问题,但几乎每个解决方案只检测碰撞的真或假。

请有人帮忙!

1 个答案:

答案 0 :(得分:0)

在运动方向上查看场景(换句话说,应用坐标的变化,使此方向变为垂直,并降低高度)。你得到一个2D数字。

考虑到两个相对的盒子的面,你会看到两个六边形,每个六边形分成三个平行四边形。

enter image description here

然后

  • 检测2D中边缘之间的交点。从边缘的截面比率,您可以确定实际的z距离。

  • 对于所有顶点,确定它们落在另一个框中的面;并且从3D方程,观察线的穿刺点进入面平面,因此距离。 (对A和B的顶点重复此操作。)

比较距离将告诉您哪个碰撞首先发生,并为您提供第一个会合点的坐标(在转换后的系统中,回到绝对坐标)。

面对面的问题很容易实现,因为面是凸多边形。