public static float DistanceBetweenRects(Rectangle r1, Rectangle r2) { if (r1.Intersects(r2)) { return(0); } float min = float.MaxValue; foreach (Segment s1 in Segment.RectangleSides(r1)) { foreach (Segment s2 in Segment.RectangleSides(r2)) { min = Math.Min(min, DistanceBetweenSegments(s1, s2)); } } return(min); }