А у меня другая идея - уменьшить оба радиуса эллипса (обе полуоси) на радиус окружности и вычислять радиус в точке, в которой находится центр круга по формуле

Если расстояние до центра эллипса меньше, чем вычисленное значение радиуса, то круг внутри эллипса
a и b - это большая и малая полуось эллипса. угол фи находится через арктангенс координат центра круга, функция Math.atan2()
Я правда не знаю точно, приведет ли уменьшение полуосей эллипса на радиус к тому, что круг будет всегда внутри эллипса, но по идее должно работать.
Если поворачивать эллипс, то можно заперентить его на какой нибудь ДО, и повернуть родительский ДО. Тогда дочерние ДО (эллипс и круг) будут иметь локальные координаты, как будто горизонтально, без поворота
Плюсы - быстро, модно, молодежно, без уравнений и корней
Минусы - при повороте эллипса придется либо формулы менять, либо вешать внутрь какого-либо родительского ДО для поворота этого родительского ДО
--UPD
Или стоп, можно изначально не уменьшать полуоси, а потом после вычисления радиуса по формуле вычесть из него. Вот тогда точно будет работать