矩形检测碰撞算法
程序员文章站
2021-12-23 21:08:06
...
/**
* 矩形检测碰撞(标准平面坐标)
* @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;
}
}
上一篇: 从一万个数中找到刚拿掉的数的算法
下一篇: 2进制和10进制的相互转化