Алгоритм по ссылке, если честно, не читал.
в данном случае, у нас это дуга с точками на конце A и B. Строим перпендикуляр к АВ от центра текущей окружности. И нам нужно идти по нему от точки О2 до S, уменьшая радиус окружности до тех пор, пока она не пересечёт ещё одну, третью точку. А если этого не произойдёт, то АВ это и будет диаметр искомой окружности.
Но если просто идти по отрезку и подбирать подходящую точку, такой алгоритм нельзя будет запрограммировать.
Почему? Просто так можно закодить численный метод бисекций: т.е. делим пополам отрезок, выбираем нужный, нужный отрезок делим пополам, выбираем снова нужный и т.п. - это будет

операций.
Подскажите, пожалуйста, как в этом случае нужно правильно формально поставить задачу для нахождения этой самой точки? А в случае её отсутствия показать, что такой точки нет?
Формально можно так: даны точки

окружности (вроде даже симметричным образом). Найти окружность, проходящую через все 3 точки. Наверное, здесь нужно похимичить с простыми соотношениями между сторонами и углами.