static double rectDistance(Rect r1, Rect r2) { double x1, x2, y1, y2; double w, h; if (r1.x > r2.x) { x1 = r2.x; w = r2.w; x2 = r1.x; } else { x1 = r1.x; w = r1.w; x2 = r2.x; } if (r1.y > r2.y) { y1 = r2.y; h = r2.h; y2 = r1.y; } else { y1 = r1.y; h = r1.h; y2 = r2.y; } double a = Math.max(0, x2 - x1 - w); double b = Math.max(0, y2 - y1 - h); return Math.sqrt(a*a+b*b); }