美文网首页
碰撞算法

碰撞算法

作者: 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; 

        } 

    相关文章

      网友评论

          本文标题:碰撞算法

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