OBB具有位置(x,y),速度(x,y)和方向(矩阵).给定定期更新,OBB必须相互冲突,返回被认为成功的移动部分. 我已经查看了GPWiki-http://gpwiki.org/index.php/Polygon_Collision上的Polygon测试 – 但它没有考虑移
我已经查看了GPWiki-http://gpwiki.org/index.php/Polygon_Collision上的Polygon测试 – 但它没有考虑移动对象或完全在OBB中的对象.
“实时碰撞检测”一书涵盖了第4章:边界体积中的3D OBB,但3维测试方法明显比2D更复杂.
为了测试2个定向边界框之间的碰撞检测,我使用分离轴定理( SAT).事实上,SAT可用于任何2个凸形之间的碰撞检测.这种技术理解起来并不复杂,并且具有合理的性能.该定理可以很容易地扩展到3D.
编辑:
该算法试图确定是否可以在两个对象之间拟合平面.如果存在这样的平面,则该对象被分离,并且不能相交.
要确定对象是否分开,只需将对象投影到平面的normal上,并比较间隔并查看它们是否重叠.
因此,显然有无数个平面可以放在两个分离的对象之间.但事实证明,你只需要测试一些飞机.
可以看出,对于盒子,待测试的分离平面是法线等于两个盒子的轴的平面.因此,对于2个盒子,您只需要测试4个分离平面.在4个平面中,一旦找到分隔框的分离平面,那么您就知道框不能相交,并且您返回无碰撞标记.
如果4个平面不能分开盒子,那么盒子必须是交叉的,并且你有碰撞.