标签: algorithm collision-detection separating-axis-theorem
我正在尝试编写一个刚体模拟器,并且在模拟过程中,我不仅对找到两个物体是否发生碰撞感兴趣,而且还感兴趣的是碰撞的点和正常。我发现了很多资源,实际上是说两个OBB是否在使用分离轴定理发生碰撞。我也对OBB的3D表示感兴趣。现在,如果我知道两个碰撞OBB的重叠区域最小的轴,有没有办法找到碰撞点和碰撞法线?此外,还有两种主要的碰撞情况,第一种是点面和第二种边缘。 我试图谷歌这个问题,但几乎每个解决方案只检测碰撞的真或假。
请有人帮忙!
答案 0 :(得分:0)
在运动方向上查看场景(换句话说,应用坐标的变化,使此方向变为垂直,并降低高度)。你得到一个2D数字。
考虑到两个相对的盒子的面,你会看到两个六边形,每个六边形分成三个平行四边形。
然后
检测2D中边缘之间的交点。从边缘的截面比率,您可以确定实际的z距离。
对于所有顶点,确定它们落在另一个框中的面;并且从3D方程,观察线的穿刺点进入面平面,因此距离。 (对A和B的顶点重复此操作。)
比较距离将告诉您哪个碰撞首先发生,并为您提供第一个会合点的坐标(在转换后的系统中,回到绝对坐标)。
面对面的问题很容易实现,因为面是凸多边形。