给定轨道偏心率的椭圆和中心点的顶点

时间:2014-04-05 07:23:52

标签: c++ opengl ellipse orbital-mechanics

计算太阳周围行星的椭圆轨道涉及公式:

e = c / a

其中:

c是从中心到焦点的距离

a是从焦点到顶点的距离

当椭圆形状(即在C ++中)不使用焦点,而是使用x和y最大距离时,如何创建程序来计算此类问题?

我目前有一个函数可以在给定(x,y)中心点和x和y长度的情况下创建椭圆。

我在将真正的椭圆轨道函数e= c/a转换为程序椭圆函数ellipse(x, y, xDistance, yDistance)时遇到问题。

有没有这样的系统或我将如何实现这一目标?目的是使用每个行星的实际数据绘制围绕太阳的行星轨道的比例模型。

IE: 水星:

  • 从太阳0.39 AU(距离)
  • 轨道偏心率:0.2056

1 个答案:

答案 0 :(得分:2)

更确切地说:

给定一行L,称为 directrix ,点F不在L上,称为焦点,以及正数e。让d(X,L)表示从点XL的距离,让|X|表示X的范数。点C的{​​{1}}集满足

X
带有 eccentricity |X - F| = e d(X,L)

被称为圆锥曲线。如果e,则称为椭圆,如果e < 1则称为抛物线,如果e = 1则称为双曲线 }。

现在你想要的是标准格式中圆锥曲线的笛卡尔方程。如果e > 1e < 1并且准线与e > 1 - 轴平行,则圆锥y是满足

的点C的集合
X = (x,y)

其中x^2 / a^2 + y^2 / [a^2 (1 - e^2)] = 1 a = e d / (1 - e^2)是从焦点到准线的距离。

如果d = d(F,L)(以及e < 1),请a > 0。然后我们以标准形式

获得椭圆方程
b = a sqrt(1 - e^2)

其中x^2 / a^2 + y^2 / b^2 = 1 分别称为半主要半短轴。在这种形式,

  • 椭圆中心位于原点a,b
  • 指纹在点(0,0)处与x - 轴交叉,
  • 这两个焦点位于(d,0)(-c,0)(c,0)c = a e
  • c^2 = a^2 - b^2 - 轴上的两个顶点位于x(-a,0)
  • (a,0) - 轴上的两个顶点位于y(0,-b)点。

因此,(0,b)是从a - 顶点到中心的距离,不是到焦点的距离。但请注意,x是从c - 顶点到焦点的距离。这可能会引起混淆。

您可以看到ya是您遗失的bxDistance。您似乎已获得yDistancea,因此您只需按上述方式计算e

当然,您可以随时查看ellipse @wikipediaThis figure有助于查看我之前的说明,但请注意我的b在那里表示为c