`
WinLi
  • 浏览: 49232 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

矩形检测碰撞算法

阅读更多
 /**  
     * 矩形检测碰撞(标准平面坐标)  
     * @param aLeftTopX     左上角x坐标值  -- 矩形1  
     * @param aLeftTopY     左上角y坐杯值  
     * @param aRightBottomX 右下角x坐标值  
     * @param aRightBottomY 右下角y坐标值  
     * @param bLeftTopX     左上角x坐标值  -- 矩形2  
     * @param bLeftTopY     左上角y坐标值  
     * @param bRightBottomX 右下角x坐标值  
     * @param bRightBottomY 右下角y坐标值  
     * @return 是否碰撞  
     */   
    public static  boolean intersectRect(int aLeftTopX, int aLeftTopY, 
        int aRightBottomX, int aRightBottomY,    
        int bLeftTopX, int bLeftTopY, 
        int bRightBottomX, int bRightBottomY) {   
           
        /*  
         * bLeftTopX >= aRightBottomX -> b在a的右边  
         * bLeftTopY >= aRightBottomY -> b在a的下面  
         * bRightBottomX <= aLeftTopX -> b在a的左边  
         * bRightBottomY <= aLeftTopY -> b在a的上面  
         */   
        if (bLeftTopX >= aRightBottomX || bLeftTopY >= aRightBottomY    
            || bRightBottomX <= aLeftTopX || bRightBottomY <= aLeftTopY) {   
            return false;   
        } else {   
            return true;   
        }      
    }   
       
    /**  
     * 矩形检测碰撞(标准平面坐标)  
     * @param aLeftTopX 左上角x坐标值 --矩形1  
     * @param aLeftTopY 左上角y坐标值  
     * @param aWidth    宽  
     * @param aHeight   高  
     * @param bLeftTopX 左上角x坐标值 --矩形2  
     * @param bLeftTopY 左上角y坐标值  
     * @param bWidth    宽  
     * @param bHeight   高  
     * @return 是否碰撞  
     */   
    public static final boolean isIntersectingRect(int aLeftTopX, 
        int aLeftTopY, int aWidth, int aHeight,    
        int bLeftTopX, int bLeftTopY, 
        int bWidth, int bHeight) {   
           
        /**  
         * bLeftTopX > aLeftTopX + aWidth  b在a的右边  
         * bLeftTopY > aLeftTopY + aHeght  b在a的下面  
         * bLeftTopX + bWidth < aLeftTopX  b在a的左边  
         * bLeftTopX + bHeight < aLeftTopY b在a的上面   
         */   
        if (bLeftTopX > aLeftTopX + aWidth || bLeftTopY > aLeftTopY + aHeight 
            || bLeftTopX + bWidth < aLeftTopX 
            || bLeftTopY + bHeight < aLeftTopY) {   
            return false;   
        } else {   
            return true;   
        }    
    } 
分享到:
评论

相关推荐

    程序中几何图形间的距离计算(碰撞检测)

    还有其它的一些碰撞检测也可以从这些碰撞检测之间演变过去。就看你是否具备这个智慧了... 1:矩形碰撞 2:点与矩形碰撞 3:线段与线段碰撞 4:点圆碰撞 5:点与圆环的碰撞 6:像素碰撞 7:直线与矩形碰撞 8...

    2D的矩形和圆的碰撞检测演示程序

    本程序演示了矩形和圆的碰撞检测,用鼠标可以控制圆与矩形碰撞,如果发生碰撞,矩形和圆都显示为红色,否则为白色。 具体的算法介绍和讨论在这个帖子里 ...

    JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【矩形情况】

    主要介绍了JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法,结合实例形式详细分析了游戏算法中针对碰撞检测的包盒矩形情况下的相关算法原理与操作注意事项,需要的朋友可以参考下

    Android游戏开发之碰撞检测(矩形碰撞、圆形碰撞、像素碰撞)

    主要介绍了Android游戏开发之碰撞检测,主要内容包含矩形碰撞、圆形碰撞、像素碰撞、多矩形碰撞的代码,感兴趣的小伙伴们可以参考一下

    JS/HTML5游戏常用算法之碰撞检测 像素检测算法实例详解

    一般来说在使用像素碰撞检测之前会使用AABB矩形包围盒先检测两个精灵是否有碰撞,如果AABB包围盒检测没有碰撞,那一定是没有碰撞到,反之,则不一定,需要进一步进行像素检测。如下图所示,很明显,虽然两个精灵的...

    分离轴检测算法

    2D多边形碰撞专用多边形检测算法,C++制作,支持圆形,三角形,不规则多边形,矩形,支持这几种多边形互相之间的碰撞检测,效率很高,每一个算法都专门做了函数

    用c语言写的OBB旋转及碰撞检测示例源代码

    用c语言写的旋转及碰撞检测示例源代码。在VC6.0环境中编写,使用了grahics 库。使用了二维OBB矩形投影半径算法。

    Particle_Collision:模拟粒子碰撞(MatLab)

    基本模拟器分为4部分: 通过UNIFORM GRID算法的碰撞检测功能确定碰撞时间的功能时间步长和解决冲突的功能将模拟渲染为电影文件奖励功能为了获得更多荣誉,已实现以下功能: 引力作用非弹性碰撞布朗动力学异构磁盘...

    JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【圆形情况】

    比如像网络游戏中,通常少则几千用户,多则上万、几十万用户同时在线,而这些碰撞都要通过服务器检测,这样计算的消耗,即使是大型服务器也会崩溃,所以通常不需要十分精确的碰撞检测情况下,使用包围盒算法,即把...

    C实现射线检测多边形碰撞

     要用射线去检测碰撞,之前我们先从一个点开始。如果能够判断一个点是否和多边形碰撞,那么可以轻易的扩展到,线和多边形,多边形和多边形的碰撞。点与多边形的碰撞是基于这个实现,PNPOLY – Point Inclusion in ...

    Collision-Detection:使用改进的Bresenham线描算法的碰撞检测

    项目2 使用改进的Bresenham线描算法的碰撞检测实现基于Breshenham中点的线算法的修改版本,以加速部分碰撞检测计算。 使用openGL扩展上述算法以测试圆盘矩形相交,以直观地演示这一点。

    CollisionDetection:有关碰撞检测的书和示例

    碰撞检测 查看本书,包括交互式示例: 更新! 这个网站已经获得了很多访问,这真是太好了。 我进行了一些更改,以使其在移动设备上看起来更好,使导航... 每个部分都包含对碰撞算法的描述,以及使用processing.js构建

    测试两个矩形的交集:超平面分离定理作者:Dan Oprisan/Timofte Bogdan-matlab开发

    分离轴定理可用于多边形网格之间的快速碰撞检测。 每个面的法线方向或其他特征方向以及叉积均用作分隔轴。 请注意,这会产生可能的分离轴,而不是分离线/平面。 如果不使用叉积,某些边对边非碰撞情况将被视为碰撞...

    quadtree-js:javascript的轻量级四叉树实现

    许多游戏需要使用碰撞检测算法来确定两个对象何时发生碰撞,但是这些算法通常是昂贵的操作,并且会大大降低游戏的速度。 一种加快处理速度的方法是减少必须进行的检查的次数。 屏幕相对两端的两个对象不可能碰撞,...

    HTML5 CANVAS游戏开发实战(PDF和源代码)

    8.5 碰撞检测 / 217 8.5.1 飞机与子弹的碰撞 / 217 8.5.2 我机与敌机的碰撞 / 220 8.6 子弹的变更 / 221 8.6.1 建立一个弹药类 / 222 8.6.2 弹药与我机的碰撞 / 223 8.7 飞机生命值的显示 / 225 8.8 游戏...

    C程序范例宝典(基础代码详解)

    实例254 小球碰撞 359 8.5 图形综合实例 361 实例255 圆形精美图案 361 实例256 直线精美图案 362 实例257 心形图案 363 实例258 钻石图案 365 实例259 雪花 366 实例260 直线、正方形综合 368 第9...

    C语言通用范例开发金典.part2.rar

    范例1-85 一趟快速排序的改进算法 248 ∷相关函数:QuickSort函数 1.5.10 简单选择排序 250 范例1-86 简单选择排序 250 ∷相关函数:SelectSort函数 1.5.11 箱子排序 252 范例1-87 箱子排序 252 ∷相关函数:...

    C语言通用范例开发金典.part1.rar

    范例1-85 一趟快速排序的改进算法 248 ∷相关函数:QuickSort函数 1.5.10 简单选择排序 250 范例1-86 简单选择排序 250 ∷相关函数:SelectSort函数 1.5.11 箱子排序 252 范例1-87 箱子排序 252 ∷相关函数:...

Global site tag (gtag.js) - Google Analytics