所以解决方案在这里:
椭圆的参数化公式:
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))
现在可以很容易地求解初始的四方程系统,并且可以找到所有角度以及日食中心坐标。