方法一 用js写示例
//矩形碰撞检测,设矩形的左上顶点是(x, y), 宽w, 高h, 那么只要存在以下情况一定不相交, 否则是相交的
function rectangleCol(x1, y1, w1, h1, x2, y2, w2, h2) {
var maxX = x1 + w1 >= x2 + w2 ? x1 + w1 : x2 + w2;
var maxY = y1 + h1 >= y2 + h2 ? y1 + h1 : y2 + h2;
var minX = x1 <= x2 ? x1 : x2;
var minY = y1 <= y2 ? y1 : y2;
if (maxX - minX < w1 + w2 && maxY - minY < h1 + h2) { //边界值
return true; //相交
} else {
return false;
}
}
方法二用C++ 写示例
int Controller::isRectOverlap( MyDiv & r1, MyDiv & r2)
int r1left =r1.x;
int r1top =r1.y;
int r1right =r1left + r1.w - 1;
int r1bottom =r1top + r1.h - 1;
int r2left = r2.x;
int r2top = r2.y;
int r2right = r2left + r2.w - 1;
int r2bottom = r2top + r2.h - 1;
if((r1left > r2right || r1top > r2bottom || r2left > r1right || r2top > r1bottom)) {
return 0;//不相交
}
return 1;
}
如图已知矩形1、矩形2的宽高坐标,判断连个矩形是否有相交处: