一般两个凸多边形的相交检测是一个多边形每一个边对另一个多边形的每一个面进行边-面相交检测。一个有向有界箱有8个顶点,6个面,12个边就要进行144次边-面相交检测。
但还有另一种分离轴检测法:任何两个不重叠的多边形总可以用一个即不与任何一个多边形的面平行也不与任何一个多边形的边平行的平面分开。
把一个obb的边作为分离轴l,这里只用考虑相交于一个顶点的三个边,因为其他九个边都分别与这三个边平行。
由obb中心指向三个不同面的垂直向量分别为u,v,w。指向其他三个面的垂直向量为-u,-v,-w。
u,v,w在l上投影的绝对值之和即为由obb中心指向8个顶点向量在l上投影的最大距离r。
由一个obb中心指向另一个obb中心的向量在l上的投影设为distance。
如果满足图上所表示的相交条件 distance > rA + rB 则可判断两个obb不相交。
分别将两个obb不平行的六个边设为分离轴都不能满足相交条件则可判断两个obb相交。
但还有另一种分离轴检测法:任何两个不重叠的多边形总可以用一个即不与任何一个多边形的面平行也不与任何一个多边形的边平行的平面分开。
把一个obb的边作为分离轴l,这里只用考虑相交于一个顶点的三个边,因为其他九个边都分别与这三个边平行。
由obb中心指向三个不同面的垂直向量分别为u,v,w。指向其他三个面的垂直向量为-u,-v,-w。
u,v,w在l上投影的绝对值之和即为由obb中心指向8个顶点向量在l上投影的最大距离r。
由一个obb中心指向另一个obb中心的向量在l上的投影设为distance。
如果满足图上所表示的相交条件 distance > rA + rB 则可判断两个obb不相交。
分别将两个obb不平行的六个边设为分离轴都不能满足相交条件则可判断两个obb相交。