给你一个以 (radius
, x_center
, y_center
) 表示的圆和一个与坐标轴平行的矩形 (x1
, y1
, x2
, y2
),其中 (x1
, y1
) 是矩形左下角的坐标,(x2
, y2
) 是右上角的坐标。
如果圆和矩形有重叠的部分,请你返回 True ,否则返回 False 。
换句话说,请你检测是否 存在 点 (xi, yi) ,它既在圆上也在矩形上(两者都包括点落在边界上的情况)。
输入:radius = 1, x_center = 0, y_center = 0, x1 = 1, y1 = -1, x2 = 3, y2 = 1 输出:true 解释:圆和矩形有公共点 (1,0)
public class checkOverLap {
public static void main(String[] args) {
checkOverLap checkOverLap = new checkOverLap();
System.out.println(checkOverLap.souluteTool(1,1,1,1,2,-3,-1));
}
public boolean souluteTool(int radius, int x, int y, int x1, int x2, int y1, int y2) {
// 1. 判断哪一点到圆心最近
double distance = 10 * 10 * 10 * 10;
for (int i = x1; i <= x2; i++) {
for (int k = y1; k <= y2; k++) {
int distance1 = Math.abs(x-i) * Math.abs(x-i) + Math.abs(y-k) * Math.abs(y-k);
double distance2 = Math.sqrt(distance1);
if (distance2<+distance){
distance=distance2;
}
}
}
// 最近的距离如果小于圆的半径 则相交
if(distance<= radius){
return true;
}
return false;
}
}