1

计算行星绕太阳运行的椭圆轨道涉及以下公式:

e = c/a

在哪里:

c是从中心到焦点的距离,并且

a是从焦点到顶点的距离

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

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

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

是否有一个系统可以解决这个问题,或者我将如何完成这个?目的是使用每个行星的实际数据绘制行星围绕太阳运行的轨道的比例模型。

即:水星:

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

1 回答 1

2

更准确地说:

给定一条线L,称为准F线,一个不在上的点L,称为焦点,以及一个正数e。让d(X,L)表示从一个点X到的距离L,让|X|表示 的范数X。满足C的点集X

|X - F| = e d(X,L)

称为具有偏心率的圆锥截面。它被称为椭圆if 、抛物线if和双曲线if 。 ee < 1e = 1e > 1

现在你想要的是标准形式的圆锥的笛卡尔方程。如果或且准线平行于 -轴,则二次曲线是满足的点集e < 1e > 1yCX = (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)wherec = a ec^2 = a^2 - b^2,
  • 轴上的两个顶点x在点(-a,0), (a,0), 和
  • 轴上的两个顶点y在点(0,-b), (0,b)

所以你a是从一个x-vertex 到中心而不是到一个焦点的距离。但是,请注意这是从-vertex 到焦点c的距离。y这可能是混乱的根源。

你可以看到ab是你的失踪xDistanceyDistance。看起来你得到了aand e,所以你只需要b像上面那样计算。

当然,您可以随时查看椭圆 @wikipedia该图将有助于可视化我之前的描述,但请注意,我c在此处表示f

于 2014-04-05T09:00:20.040 回答