`
WinLi
  • 浏览: 50947 次
  • 性别: 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;   
        }    
    } 
分享到:
评论

相关推荐

    AABB碰撞检测算法

    它可能包含了优化的AABB算法和其他高级碰撞检测技术,例如针对多边形和三角面片的处理,以及支持动态物体的碰撞检测。 在实际应用中,AABB算法通常与其他碰撞检测技术结合使用,如OBB(oriented bounding box,即...

    绘制旋转矩形以及旋转矩形的碰撞检测(基于BCGCBPro)

    综上所述,"绘制旋转矩形以及旋转矩形的碰撞检测"涉及到的知识点广泛,包括图形编程、几何变换、碰撞检测算法、事件驱动编程以及特定框架的使用。通过学习和实践这些内容,开发者可以创建出更加丰富和交互性强的图形...

    基于距离的碰撞算法

    基于距离的碰撞算法是一种优化过的碰撞检测方法,尤其适合于地图区域相对较小的游戏场景。这类算法通常比传统的矩形或圆形碰撞检测更为精确,能够处理更复杂的形状,并且计算效率相对较高。 **基于距离的算法基础**...

    cocos2dx碰撞检测(支持sprite矩形旋转)

    总结,"cocos2dx碰撞检测(支持sprite矩形旋转)"涉及的关键技术是分离轴定理,通过C++代码实现这一算法,可以有效地处理旋转精灵之间的碰撞检测。在实际的游戏开发中,这样的功能对于创建动态且真实的交互至关重要...

    矩形块碰撞线框_889770com_矩形块碰撞线框_

    矩形块碰撞线框的检测主要是判断两个或多个矩形是否发生相互接触,这是基础的物理碰撞检测算法。 首先,我们要理解矩形碰撞的基本原理。两个矩形发生碰撞,意味着它们的边界至少有一个点重叠。我们可以通过比较每个...

    AABB包围盒碰撞检测算法1

    在游戏开发中,碰撞检测是至关重要的,尤其是在3D场景中。AABB(Axis-Aligned Bounding Box,轴对齐包围盒)是一种常用的简单碰撞检测方法,尤其适用于Unity 3D和Cocos2d-x等游戏引擎。AABB通过创建一个与坐标轴平行...

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

    - 矩形碰撞检测通常用于游戏对象或UI元素的交互。给定两个矩形的坐标(左下角的x,y坐标以及宽度w和高度h),可以通过比较它们的边界来确定是否相交。例如,如果一个矩形的右边界小于另一个的左边界,或者顶部大于...

    j2me透明泡泡碰撞算法小演示

    这个"j2me透明泡泡碰撞算法小演示"项目提供了一个简单的实例,展示了如何在受限的资源环境下实现动态物体的碰撞检测。 首先,让我们了解一下透明泡泡的实现。在J2ME中,创建透明泡泡可能涉及到使用PNG或GIF格式的...

    4-14-1(矩形碰撞).zip

    3. **AABB碰撞检测算法**: - AABB之间的碰撞检测相对简单,因为它只需要比较每个轴上的最小和最大坐标值。 - 对于两个矩形A(x1a, y1a, x2a, y2a)和B(x1b, y1b, x2b, y2b),如果满足条件: - x1a 且 x1b (水平...

    cocos2d-x矩形法碰撞检测实例

    对于这种情况,可以使用更高级的碰撞检测算法,如分离轴定理(Separating Axis Theorem, SAT)。但作为基础,矩形法已经足够应对大部分简单的2D游戏需求。 在`Classes`目录中,你可能会找到游戏对象(如精灵)的C++...

    实时碰撞检测算法综述.pptx

    "实时碰撞检测算法综述" 实时碰撞检测算法是计算机图形学、虚拟现实、机器人技术等领域中的一个重要组成部分。该算法可以实时检测虚拟物体之间的碰撞,提高游戏的真实感和互动性,并且用于机器人的路径规划和避障,...

    方块在矩形框中碰撞的源程序

    总结来说,"方块在矩形框中碰撞的源程序"是一个学习和实践C++碰撞检测的好资源,它涵盖了基本的矩形碰撞算法和用户交互逻辑,对于提升编程技能和理解游戏物理系统有极大的帮助。通过深入研究和修改这个项目,开发者...

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

    矩形和圆形碰撞检测由于算法简单、效率较高,适用于大多数情况。而像素碰撞检测虽然精确,但性能要求较高,适用于需要精细碰撞处理的场景。多矩形碰撞检测则为处理复杂形状的物体提供了灵活性。理解并熟练运用这些...

    圆形与矩形碰撞.rar

    这个压缩包文件"圆形与矩形碰撞.rar"很可能包含了使用易语言编写的源代码,用于实现这种碰撞检测算法。易语言是一种简单易学的编程语言,特别适合初学者和快速开发。 圆形与矩形碰撞检测是游戏物理系统的基础部分,...

    小球碰撞反弹经典算法

    在J2ME平台中,由于资源限制和设备性能的考量,高效且精确的小球碰撞检测及反弹算法尤为重要。此类算法主要用于模拟小球在限定区域内移动时与边界或其它物体的碰撞反应,确保游戏或动画效果的真实感与流畅性。算法的...

    3D数学碰撞库,球,obb,胶囊体等碰撞

    本文将深入探讨3D数学碰撞库,特别是针对球体、OBB(轴对齐边界盒)和胶囊体的碰撞检测算法。 首先,我们来理解3D数学的基础。在3D空间中,位置通常由一个包含X、Y和Z坐标的向量表示,而方向或运动则由向量的差分或...

    C语言复杂碰撞检测算法.docx

    本示例展示了如何在 C 语言中实现一个基础的矩形碰撞检测算法。 首先,定义了一个名为 `Rectangle` 的结构体,它包含四个整数变量:`x` 和 `y` 表示矩形左上角的坐标,`width` 和 `height` 分别代表矩形的宽度和...

    Android矩形碰撞

    首先,我们来探讨基础的矩形碰撞算法。最简单的矩形碰撞检测是基于边界框的检查,即比较两个矩形的边界是否重叠。对于两个矩形A(x1, y1, w1, h1)和B(x2, y2, w2, h2),其中x和y是矩形左下角的坐标,w和h是宽度和高度...

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

    本篇将详细介绍一种常用的碰撞检测方法——包围盒检测算法,特别是针对矩形情况的实现。 包围盒检测算法的核心思想是通过简化复杂的图形,将其归纳为简单的几何形状,如矩形,以便快速地判断两个对象是否可能碰撞。...

    android 动画 碰撞矩形

    当矩形移动并可能与屏幕边缘发生碰撞时,我们需要检测碰撞并做出反应,使矩形反弹。在二维空间中,矩形碰撞检测通常基于边界框(BoundingBox)的方法。简单来说,就是比较矩形的边界坐标,如果它们有交集,则发生...

Global site tag (gtag.js) - Google Analytics