Другой путь неверен.
Это:
double maxDistance = rmax + (centreDistance-rmin);
должно быть:
double maxDistance = rmax + centreDistance + rmin;
Вы также пропускаете случай пересечения окружностей.Это тот случай, когда
centreDistance < r1+r2 && centredistance + rmin >= rmax
В этом случае
minDistance = 0
maxDistance = rmax + centreDistance + rmin
centreDistance == 0 также неверно, это должно быть maxDistance = r1 + r2
(поскольку вы должны сравнивать точки на противоположныхсторона центра. В любом случае, это просто особый случай пути else и может быть опущен.
Реальный случай:
centreDistance>=r[i]+r[j] (centres are so far apart the circles don't overlap, or touch in one point)
centreDistance < r1+r2 && centredistance + rmin >= rmax (circles intersect)
centreDistance < r1+r2 && centredistance + rmin < rmax (one circle inside the other)