1.两个矩形的重叠判断?
判断边界即可,假设矩形1的left1,right1,top1,down1,
只需要left1>right2||right1<left2||top1<down2||down1>top2 两个矩形就是分开的
2.两个圆形的重叠判断?
直接判断两个圆心的距离即可
3.一个矩形一个圆形的重叠判断?
注意题目的最后一句的提示,即找矩形内部或矩形边界上离圆心最近的一点,判断与圆心的距离,<=圆半径,说明有重叠
扫描二维码关注公众号,回复:
12419545 查看本文章

class Solution {
public:
bool checkOverlap(int radius, int x_center, int y_center, int x1, int y1, int x2, int y2) {
//直接找矩形内部及边界距离圆心最近的点,然后判断到圆心的距离即可
int x=x_center,y=y_center;
if(x>x2||x<x1)
{
x=abs(x-x2)>abs(x-x1)?x1:x2; //找到离圆心最近的x
}
if(y>y2||y<y1)
{
y=abs(y-y2)>abs(y-y1)?y1:y2;//找到离圆心最近的y
}
return radius*radius>=((x-x_center)*(x-x_center)+(y-y_center)*(y-y_center));
}
};