public abstract bool Overlaps(BoundingRegion b);
public override bool Overlaps(BoundingRegion b) { var delta = b.Center - Center; var edgePoint = PointOnEdge(delta); if (edgePoint == Vector2.Zero) return true; return b.Intersects(edgePoint + Center); }