包围球与包围盒的碰撞检测

    技术2026-05-14  8

    碰撞检测算法的引申问题

     

    盒子和盒子的碰撞,或者球和球的碰撞已经有太多的讨论文章, 这里不说

    这里只说盒子和球的碰撞

     

    二维情况:

    问题描述:  平面任意的矩形和一个圆是否相交的判定

    分析:

            圆和矩形相交发生情况下,球心在什么区域呢?

            区域的形状是个圆角矩形, 如下示意图

            

           绿色为矩形的部分, 当圆的圆心卫浴蓝色和绿色的部分的时候就会相交

     

           因此算法为:

               循环矩形的每个边

                    判定球心到矩形的边的距离(注意距离是有正负的)d

                    如果d>圆半径r,必然不相交

                    如果d>0 并且 d< r  记录下这个边号

               // 记录下来的边号只有0,1,2三种情况, 0表示圆心位于绿色区域    1表示在上边或者左边   2 表示左上角

               如果记录下来的编号小于2, 则必然相交

               如果记录下来的编号是2

                    检测两个记录下来的边的交点(矩形的一个顶点)和圆心距离dd

                    dd<r 则相交

                    dd>r不相交

     

    三维情况

        问题描述:  空间任意长方体与一个球体的相交,如何判定

       分析:  和二维的情况类似, 球心是在一个圆角长方体内才会相交

       算法:

                 判定球心和每个面的情况

                 记录到面距离小于r又大于0的面

                 根据面计算处于棱边状况或者顶角的状况

     

    no time, continue。。。。。

    最新回复(0)