OBB 具有位置(x,y)、速度(x,y)和方向(矩阵)。在定期更新的情况下,OBB 必须相互碰撞,返回被认为成功的移动部分。
我查看了 GPWiki 上的多边形测试 -http://gpwiki.org/index.php/Polygon_Collision http://gpwiki.org/index.php/Polygon_Collision- 但它不考虑移动对象或完全位于 OBB 内的对象。
《实时碰撞检测》一书在第 4 章:边界体积中介绍了 3D OBB,但 3 维测试方法明显比 2D 更复杂。
为了测试两个定向边界框之间的碰撞检测,我将使用分离轴定理(SAT http://www.metanetsoftware.com/technique/tutorialA.html)。事实上,SAT 可以用于任意 2 个凸形状之间的碰撞检测。该技术理解起来并不太复杂,并且具有合理的性能。
该定理可以很容易地扩展到 3D。
EDIT:
该算法尝试确定是否可以在两个对象之间拟合一个平面。如果存在这样的平面,则对象是分离的,并且不能相交。
要确定物体是否分离,只需将物体投影到normal http://en.wikipedia.org/wiki/Surface_normal平面,并比较间隔并查看它们是否重叠。
因此,显然有无数个平面可以容纳在两个分离的物体之间。但事实证明,你只需要测试少数几架飞机即可。
可以看出,对于盒子,要测试的分离平面是法线等于两个盒子的轴的平面。因此对于 2 个盒子,总共只需要测试 4 个分离平面。在 4 个平面中,一旦找到分隔盒子的分离平面,那么你就知道盒子不能相交,并且返回一个无碰撞标志。
如果 4 个平面无法将盒子分开,那么盒子一定是相交的,此时就会发生碰撞。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)