1.正方形的中心点和圆的圆心重合
2.最短距离分为三中情况
第一种情况:圆的直径小于正方形的边长,此时最短距离t=(a-2*r)/2.0;
第二中情况:圆的直径大于等于正方形的边长,并且圆的直径小于等于正方形的对角线,
此情况下,圆始终和正方形相交,最短距离为0.
第三种情况:圆的直径大于正方形的对角线,最短距离为:(圆的直径 - 正方形对角线)/2
#include <iostream> using namespace std; #include <math.h> int main() { double a,r; cin>>a>>r; if(a-2*r>=1e-3) { double t=(a-2*r)/2.0; printf("%.3lf",t); } else if(sqrt(2)*a-2*r>=1e-3) { printf("%.3lf",0); } else if(sqrt(2)*a-2*r<1e-3) { double t=(2*r-sqrt(2)*a)/2; printf("%.3lf",t); } return 0; }