美文网首页
碰撞算法

碰撞算法

作者: Lennie_S | 来源:发表于2019-11-20 13:22 被阅读0次

碰撞检测算法:点和矩形碰撞、点和圆形碰撞、矩形碰撞、圆形碰撞

点和矩形碰撞

/**

    * 

    * @param x1 点

    * @param y1 点

    * @param x2 矩形view x

    * @param y2 矩形view y

    * @param w  矩形view 宽

    * @param h  矩形view 高

    * @return*/publicstaticbooleanisCollision(intx1,inty1,intx2,inty2,intw,int h) { 

        if(x1 >= x2 && x1 <= x2 + w && y1 >= y2 && y1 <= y2 + h) { 

            returntrue; 

        } 

        returnfalse; 

    } 

矩形碰撞

/**

    * 检测两个矩形是否碰撞

    * @return*/publicbooleanisCollisionWithRect(intx1,inty1,intw1,int h1, 

            intx2,inty2,intw2,int h2) { 

        if(x1 >= x2 && x1 >= x2 + w2) { 

            returnfalse; 

        } elseif(x1 <= x2 && x1 + w1 <= x2) { 

            returnfalse; 

        } elseif(y1 >= y2 && y1 >= y2 + h2) { 

            returnfalse; 

        } elseif(y1 <= y2 && y1 + h1 <= y2) { 

            returnfalse; 

        } 

        returntrue; 

    } 

点(x1,x2) , 圆心(x2,y2) ,半径r

if(Math.sqrt(Math.pow(x1 - x2, 2) + Math.pow(y1 - y2, 2)) <= r) { 

            // 如果点和圆心距离小于或等于半径则认为发生碰撞  returntrue; 

        } 

圆和圆

/**

    * 圆形碰撞

    * 

    * @param x1

    *            圆形1的圆心X坐标

    * @param y1

    *            圆形2的圆心X坐标

    * @param x2

    *            圆形1的圆心Y坐标

    * @param y2

    *            圆形2的圆心Y坐标

    * @param r1

    *            圆形1的半径

    * @param r2

    *            圆形2的半径

    * @return*/privatebooleanisCollisionWithCircle(intx1,inty1,intx2,int y2, 

            intr1,int r2) { 

        // Math.sqrt:开平方 

        // Math.pow(double x, double y): X的Y次方 

        //直角坐标系,依点1和点2做平行线,|x1-x2|为横向直角边,|y1-y2|为纵向直角边 依勾股定理 c^2=a^2+b^2  if(Math.sqrt(Math.pow(x1 - x2, 2) + Math.pow(y1 - y2, 2)) <= r1 + r2) { 

            // 如果两圆的圆心距小于或等于两圆半径和则认为发生碰撞  returntrue; 

        } 

        returnfalse; 

    } 

相关文章

  • 碰撞算法

    碰撞检测算法:点和矩形碰撞、点和圆形碰撞、矩形碰撞、圆形碰撞 点和矩形碰撞 /** * * @para...

  • 算法(小球碰撞)

    两小球碰撞时的速度方向和碰撞时两圆心的连线不在同一条线上(图【1】)。 需要做速度分解(图【2】)。 分解后在碰撞...

  • 多边形碰撞检测(分离轴算法Lua实现)

    在游戏开发中,我们一般常用的碰撞检测算法有AABB,OBB以及分离轴算法。AABB与OBB一般用于矩形的碰撞检测,...

  • Verlet树叶子节点的GPU碰撞算法

    Verlet树叶子节点的GPU碰撞算法 Collision Detection for the Leaf Part...

  • 每日安全资讯:SHA-1 碰撞攻击正变得切实可行

    Google 在 2017 年宣布了对 SHA-1 哈希算法的首个成功碰撞攻击。所谓碰撞攻击是指两个不同的信息产生...

  • ArrayMap跟HashMap区别

    Hash碰撞的解决方式 提起存储键值对,首先想到的是Map集合,但是对于hash算法导致的hash碰撞,一般有两种...

  • C语言—实现射线检测多边形碰撞

    以前,使用旋转分离轴实现过, 矩形旋转碰撞,OBB方向包围盒算法实现。但这个算法,本身有点复杂,并且在边越多的时候...

  • 渲染管线(Rendering Pipeline)

    1. Application stage 应用阶段 软件执行、应用驱动、CPU运行碰撞检测、全局加速算法、动画、...

  • OBB碰撞算法-2D

    概述 OBB 即 oriented bounding box(方向包围盒),用来抽象化复杂几何图形,以简化碰撞 如...

  • HashMap随笔

    一、hash 即散列、任意长度-->hash算法-->固定长度、碰撞 常用函数:直接取余、乘法取整、平方取中 ...

网友评论

      本文标题:碰撞算法

      本文链接:https://www.haomeiwen.com/subject/hlroictx.html