问题标签 [orbital-mechanics]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
329 浏览

c++ - 如何在给定时间后确定物体在 2D 空间中的位置?

我正在尝试用 C++ 编写二维空间模拟。在其中,您可以创建一个质量为 (m) 的行星,在位置 (x,y) 上沿方向 (d) 以速度 (v) 移动。在这个星球上还有一个物体(即恒星)具有引力。该物体具有质量 (M) 和位置 (X,Y)。我想创建一个函数,在给定时间 t 后返回行星的位置。这颗行星不一定在轨道上,但如果速度和距离允许,它可能会在轨道上。我知道它涉及开普勒方程,但我自己无法弄清楚它的确切数学实现。任何帮助将不胜感激。

我当前的更新功能根本没有考虑恒星或质量。

0 投票
1 回答
134 浏览

c++ - 我更新恒星附近行星位置的功能有什么问题?

最初,代码似乎在行星向恒星弯曲时起作用,但由于它应该被拉入恒星或进入轨道,它只是被推向相反的方向。我究竟做错了什么?当距离的符号发生变化时,行为的变化似乎发生了。

xPos 和 yPos 是行星的当前位置。t 是自上次更新以来的时间。速度和方向是行星开始时的初始速度和角度。自从我们在太空中以来,这种力量永远不会改变。重力是万有引力常数。starX 和starY 是恒星的位置,distance 是恒星与行星之间的距离。角度是恒星和行星之间的角度(我感觉这是导致不良行为的原因。)

0 投票
1 回答
665 浏览

python - Python Matplotlib:以移动艺术家为中心

我之前问过这个问题很糟糕,所以我将尝试更详细一点。

我已经制作了一些行星轨道程序,我想知道我是否可以将图形围绕更改位置的艺术家居中,以便图形窗口移动,而不是停留在 (0,0)

因此,如果艺术家的中心在 simData 中定义如下:

我假设某处必须有这样的东西:

我不能这样做,因为我无法调出这些变量。另外,轴和图形只在程序开始时定义一次。

这是我的代码,4颗行星在轨道运动:

0 投票
1 回答
1788 浏览

physics - 如何在太空中找到两颗卫星之间的距离?

我想编写一个 C 程序,以每秒计算两颗卫星在太空中的距离t。我最初的输入是:

  • 初始速度
  • 大量的
  • 半径
  • 位置(x,y 坐标)

对于两颗卫星。由于我有两颗卫星的初始位置,即 x,y 坐标(实际上是 x,y,z 坐标,但为简单起见,我取 x,y),使用毕达哥拉斯定理我可以找到两颗卫星之间的初始距离。

然后我使用牛顿万有引力定律计算卫星 1 对卫星 2 施加的力。两颗卫星在 2 个不同的圆形轨道上连续旋转(例如,一颗垂直于地球,另一颗水平且半径相同,因此它们可能会发生碰撞)。

根据搜索引擎的信息,加速度的双重积分得出了两颗卫星之间的距离。

我正在使用以下方法计算新职位:

我在用:

计算a

这个公式没有给出有效的距离,因为它不断增加,但我预计距离会增加和减少,因为它是圆周运动,卫星也可以靠近或走远。我觉得我在使用合适的加速公式时出错了。

这是应用概念和公式的正确方法吗?

这是一个不错的网址,看起来与我打算做的类似:
http ://www.science-animations.com/support-files/gravitasieplaneteb.swf

代码如下:

0 投票
0 回答
2264 浏览

matlab - 地球和月球关于太阳的 MATLAB 轨道

在此处输入图像描述我们正在尝试绘制月球绕地球运行的轨道,而地球又绕着太阳运行。我们正在使用 Euler-Cromer 方法。此代码适用于行星的模拟。并且它应该在正确的初始条件下工作,对于更复杂的设置,例如我们现在正在尝试使用三个物体。我们的代码是这样的:

脚本如下:

但我们就是不能让月亮配合。有什么建议么?

谢谢!

0 投票
1 回答
48 浏览

c# - 为什么我的相机轨道在负 z 方向飞行?

我从一个有一年历史的统一线程中提取了大部分代码。每当我运行它时,我的相机都会很快在负 z 方向上运行。我整天都在研究变量,但没有什么能让我点击它。

z 每帧变化 5 个单位,这正是我为相机距离设置的。这似乎是理解问题的关键。我的部分问题是我几乎不能使用变换和欧拉角来掌握移动的物体。感谢您的时间。

0 投票
2 回答
621 浏览

c++ - 物理月球地球太阳系统

http://pastebin.com/ccck8LjE

您好,我编写了这段代码来尝试模拟月球地球太阳系统。我得到了地球的圆形轨道,但月亮发疯了。

有没有更好的方法来尝试这样做,同时仍然使用 euler/leapfrog 方法?

0 投票
2 回答
1604 浏览

python - 二体轨道建模问题

如果您不想阅读太多背景信息,请跳至下面的更新 2。

我正在尝试为简单的轨道模拟(两个物体)实现一个模型。

但是,当我尝试使用我编写的代码时,结果生成的图看起来很奇怪。

该程序使用初始状态向量(位置和速度)来计算开普勒轨道元素,然后使用这些元素计算下一个位置,并作为接下来的两个状态向量返回。

这似乎工作正常,只要我将绘图保持在轨道平面上,它本身就可以正确绘图。但我想将绘图旋转到参考框架(父体),以便我可以看到轨道外观的酷 3D 视图(obvs)。

现在,我怀疑这个错误在于我如何从轨道平面中的两个状态向量转换为将它们旋转到参考系。我正在使用本文档第 6 步中的方程式创建以下代码(但应用单独的旋转矩阵 [从此处复制]):

(对于上下文,这是我用于轨道模型的完整类。)

当我从结果中绘制 X 和 Y 坐标时,我得到了这个:

在此处输入图像描述

但是当我将旋转矩阵更改为 时R = Rz(-O) * Rx(-i),我得到了这个更合理的图(尽管显然缺少一个旋转,并且稍微偏离中心):

在此处输入图像描述

当我将它进一步减少到 时R = Rx(-i),正如人们所期望的那样,我得到了:

在此处输入图像描述

所以正如我所说,我很确定不是轨道计算代码表现得很奇怪,而是旋转代码中的一些错误。但我不确定在哪里缩小范围,因为我对一般的 numpy 和矩阵数学都很陌生。


更新:基于随机的回答,我转置了矩阵(R = Rz(-O).T * Rx(-i).T * Rz(-w).T),但随后得到了这个图:

在此处输入图像描述

这让我想知道我对屏幕坐标的转换是否在某种程度上是错误的——但它对我来说看起来是正确的(并且与旋转较少的更正确的图相同),即:


更新 2

尽管我在随机的帮助下对方程的实现以及旋转进行了三重检查,但我仍然无法正确显示轨道。它们仍然与上图中的基本相同。

使用来自 NASA Horizo​​n 系统的数据,我使用来自国际空间站 (2457380.183935185 = AD 2015-Dec-23 16:24:52.0000 (TDB)) 的特定状态向量建立了一个轨道,并将它们与开普勒轨道元素进行了相同的检查时间,这产生了这个结果:

最高值是我的(计算的)值,最低值是 NASA 的值。显然,一些浮点精度误差是可以预料的,但变化mean_anomaly确实true_anomaly比我预期的要大。(我目前正在float12864 位系统上使用数字运行我的所有 numpy 计算)。

此外,生成的轨道仍然看起来像上面的(非常)偏心的第一个图(尽管我知道这个 LEO ISS 轨道是非常圆形的)。因此,对于问题的根源可能是什么,我感到有些困惑。

0 投票
2 回答
2088 浏览

java - Java行星轨道模拟:居中行星

我创建了一个简单的行星模拟,其中行星围绕恒星运行。轨道的代码是这样的:

现在效果很好,但我的问题是轨道不是围绕恒星中心的行星中心。 这就是发生的事情

如您所见,小圆圈上的第一个红点是围绕第二个小红点运行的行星的位置,这是因为圆圈是从(0,0)绘制的,所以两个行星(0,0 ) 围绕恒星的 (0,0) 旋转。

我需要行星的中心来环绕恒星的中心,而不是它们的原点。

有什么好的解决方法吗?

0 投票
0 回答
409 浏览

python - 输出与 C++、pyephem 和 Heavens Above 中的 sgp4 不匹配

我正在尝试从 TLE 文件中预测计算 LEO 卫星的位置和预测通过。为方便起见,我只乘坐国际空间站。

到目前为止,我所做的是下载用于 C++ 的 spg4 库 sgp4 库并查看了两个示例程序sattrakpasspredict。前者给出了地球卫星在ECI坐标系中的位置,后者预测了它何时可以从地球上的某个位置看到。

到目前为止我唯一做的就是输入一个最近的 TLE 文件,更改观察者位置并编译它,一次使用包含的 makefile,一次通过 g++ foo.cpp -o bar /usr/lib/libsgp4

将结果与Heavens Above中的预测通行证进行比较,结果差异很大。对于预测的通过,例如,在几秒到大约 90 秒之间。最大高度接缝并没有那么错误,虽然天堂之上是全度数,这使得它很难比较。为了排除它们只是在确定卫星是否可见的算法上有所不同,我将其与sattrak的数据进行了比较,确认计算出的位置实际上是不同的。

我也尝试使用 python 的 pyephem 库进行相同的操作,这似乎很方便。我尝试了以下方法来计算接下来的五次传球:

但是,结果也与 Heavens Above(或 C++ 代码)不匹配,尽管差异始终低于 10 秒。

老实说,我对 pyephem 中使用的 libastro 例程一无所知,因此不能 100% 相信它们。请纠正我,如果我错了。

有谁知道,为什么我没有得到预期的结果?在我看来,使用未更改的passpredict程序几乎不可能搞砸。

我并不关心我会使用 C++ 还是 python,只要我得到好的结果。此外,python-sgp4 看起来很不错,我很有信心,一旦我做对了,我可以很容易地在 python 和 C++ 之间进行交换。

我真的希望有人可以帮助我,因为我现在很无助,甚至连一个最小的例子都没有。我知道,已经有一个类似的帖子,但我不认为我给了它一个混淆坐标系的机会,这是另一篇帖子中的问题。

非常感谢您!