Ничего не понял. Напишите яснее что должна делать Ваша программа.
Почему три рисунка?
Программа должна рисовать две окружности. Заданны произвольные радиусы. Условие что бы маленькая окружность касалась большого круга и диаметра как показано на рисунке. В рисунке показаны различные варианты радиуса окружностей для более лучшего понимания задачи.
По условию видно что r не может больше чем R/2, иначе не будет касания большой окружности и диаметра как показано на рисунке.

Для решения данной задачи нужно найти координаты маленькой окружности. Я вывел чудом формулу.помощью системы уравнений окружности.

Координаты большой окружности 0,0. То есть это начало координат. На декартовую систему координат нарисованная в самом низу не обращать внимания. потом легко будет перенести на нижнюю систему координат.
R, r , x0=-r известны
x,y, y0 не известны.
Так как не известны x,y;(координаты точки касания)
я решил взял случай в котором радиус маленькой окружности будет максимальной величины.
То есть r=R/2.
вот как тут. (Рисунок первый)

и взял их точки касания. Не трудно заметить что они будет равны x=-R,y=0 и подставил в уравнение.
Теперь x,y; типа известны. Вывел формулу и она оказалось рабочей для любых r<=R/2. Нашел y0;
Теперь координаты маленького круга известны. Они вычисляются по формуле x0=-r; y0=sqrt(2*R*r-R*R) И программа рисует окружности как надо

Следующая поставленная задача состоит в нахождении x,y то есть координаты точки касания окружностей.
Теоретически можно таким же образом найти x,y. Только тут две не известные координаты и все гораздо сложней. Теперь y0,x0,r,R известны; x,y не известны. 20 раз выводил формулу с нуля. И нет не работает