碰撞检测

碰撞检测:
1、圆形与矩形的碰撞检测

函数ComputeCollision,当相对距离小于圆形半径的时候为碰撞。

  参数介绍(w:矩形的宽,h:矩形的高,r:圆形半径,rx:圆形中心与矩形中心相对坐标X,ry:圆形中心与矩形中心相对坐标Y)

        function ComputeCollision(w, h, r, rx, ry) {
            var dx = Math.min(rx, w * 0.5);
            var dx1 = Math.max(dx, -w * 0.5);
            var dy = Math.min(ry, h * 0.5);
            var dy1 = Math.max(dy, -h * 0.5);
            return (dx1 - rx) * (dx1 - rx) + (dy1 - ry) * (dy1 - ry) <= r * r;
        }


2、圆形坐标中心位置和矩形坐标中心位置
   圆形坐标指鼠标的位置
   修正圆形的位置,让鼠标在圆心的中心位置

                //圆心坐标
                var radiusPosX = parseInt((event.clientX || event.x));
                var radiusPosY = parseInt((event.clientY || event.y));

                event = event || window.event;
                //让鼠标在圆心的位置
                circle.style.left = parseInt(radiusPosX - radius) + "px";
                circle.style.top = parseInt(radiusPosY - radius) + "px";

 矩形的长宽
 矩形的中心位置是(相对距左+宽度,相对距顶+高度)。

                //矩形的长宽
                var rectW = rect.clientWidth;
                var rectH = rect.clientHeight;
                //矩形中心坐标
                var rectPosX = parseInt(rect.offsetLeft) + rectW / 2;
                var rectPosY = parseInt(rect.offsetTop) + rectH / 2;

 

posted @ 2012-07-01 22:17  前端咖  阅读(6400)  评论(4编辑  收藏  举报