Итак, решение здесь:
Параметризованная формула эллипса:
x = x0 + a * cos(t)
y = y0 + b * sin(t)
Давайте добавим к нему известные координаты двух точек:
x1 = x0 + a * cos(t1)
x2 = x0 + a * cos(t2)
y1 = y0 + b * sin(t1)
y2 = y0 + b * sin(t2)
Теперь у нас есть система уравнений с 4 переменными: центр эллипса (x0 / y0) и двумя углами t1, t2
Давайте вычтем уравнения, чтобы избавиться от координат центра:
x1 - x2 = a * (cos(t1) - cos(t2))
y1 - y2 = b * (sin(t1) - sin(t2))
Это может быть переписано (с формулами тождеств продукта к сумме) как:
(x1 - x2) / (2 * a) = sin((t1 + t2) / 2) * sin((t1 - t2) / 2)
(y2 - y1) / (2 * b) = cos((t1 + t2) / 2) * sin((t1 - t2) / 2)
Давайте заменим некоторые уравнения:
r1: (x1 - x2) / (2 * a)
r2: (y2 - y1) / (2 * b)
a1: (t1 + t2) / 2
a2: (t1 - t2) / 2
Тогда мы получим простую систему уравнений:
r1 = sin(a1) * sin(a2)
r2 = cos(a1) * sin(a2)
Деление первого уравнения на второе дает:
a1 = arctan(r1/r2)
Добавление этого результата к первому уравнению дает:
a2 = arcsin(r2 / cos(arctan(r1/r2)))
Или просто (с использованием композиций функций триггера и обратной функции):
a2 = arcsin(r2 / (1 / sqrt(1 + (r1/r2)^2)))
или даже более просто:
a2 = arcsin(sqrt(r1^2 + r2^2))
Теперь исходная система четырех уравнений может быть легко решена, и можно найти все углы, а также координаты центра затмения.