问题标签 [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 投票
3 回答
789 浏览

c# - 从状态向量中找到真正的异常

我正在尝试将状态向量(位置和速度)转换为开普勒元素,但是在尝试计算真实异常时,我遇到了负速度或位置会给我错误结果的问题。

以下是我尝试计算真实异常的不同方法:

编辑:Spectre指出的另一种方法:

位置都是相对于父体的。

如果 position.x、position.y 和 velocity.y 都是正数,这些函数都一致。如何解决这些问题,以便在位置和速度为负数时获得一致的结果?

澄清一下:我的角度似乎是正确的,只是根据位置和/或速度矢量指向错误的象限。

是的,所以我错了,毕竟以上都返回了正确的值。

所以我发现了一个边缘情况,上面的大多数计算都失败了。给定位置和速度:

当我认为它应该返回 `31.1(非负数)时,我得到了一些奇怪的结果,即 ~ -31.1 度。其中一个返回〜328.8。
然而,用这个位置和速度进行测试,结果似乎还可以:

有关我如何测试的额外代码以及我对其他一些变量使用的数学,请参阅我的答案。

我在这个上绕圈子。这是我现有代码中的错误的结果,该错误在某些情况下出现,但在其他情况下不出现。我想现在真正的问题是为什么我会得到与我的期望或彼此不匹配的位置/速度以上的不同结果?

0 投票
1 回答
2619 浏览

python - 如何在 scipy.integrate.RK45 中输入时间步长

scipy.integrate.RK45 的实现没有指定在哪里提到应该执行集成的时间。

输入选项“t_bound”似乎是最后一个时代。

要进行集成,必须使用“step”选项,该选项没有输入,因此无法在此处指定时间戳。

与其他积分器相比:scipy.integrate.solve_ivp,它具有选项“t_eval”,其中可以提及需要解决方案的所有时期(作为数组)。

以下代码有效:

使用“fun_integrator”作为我的函数,输入 (t,y) t_span = [0 max(t)] 和

^= 需要答案的时期

但是,Matlab ode113 比 scipy solve_ivp 提供了更好的结果,所以我想尝试 scipy.integrate.RK45 来检查我是否能得到更好的结果。

但是如何在上面的代码中输入步长?

更多信息:函数和 y0:

0 投票
0 回答
151 浏览

c# - 如何使用像素计算椭圆扇区的表面积?

我正在做一个关于行星运动的科学项目。我需要将通常是椭圆的行星的轨道划分为天数。例如,我需要将地球轨道分成 365 个部分,而不是按长度。我需要将其表面分成 365 个部分,也称为扇区。我正在考虑创建一个生成随机扇区的代码,直到表面积是我们正在寻找的那个。

所以,我首先通过将原始椭圆区域划分为 365 来找到 365 个扇区的每个区域应该是什么。然后我想从太阳的位置(也称为焦点或焦点)到椭圆轨道的边缘绘制随机线一个直到正在生成的那个扇区的区域是我们之前计算的那个。

没有数学方法可以找到椭圆任何扇区的表面积。因此,实现我们正在寻找的唯一方法是按像素计算。而且由于我对这些东西很陌生,所以我不知道该怎么做。

我真的希望你能帮助我。提前致谢。如果代码在 c# 中会更好,否则在 python 中。

0 投票
2 回答
123 浏览

matlab - 特定角动量计算方法之间差异的原因?

我正在尝试以数值方式求解两个相互倾斜的紧密椭圆轨道之间转移的 delta-V 成本。我使用的方法本质上是在一个节点处计算初始轨道的速度矢量,在相对节点处计算最终轨道,然后从初始飞行路径角度、初始半径和最终半径计算转移轨道。

一个关键步骤是计算转移轨道的比角动量矢量和偏心率矢量,从而计算转移轨道的周向惯性方向余弦矩阵。然而,当我从惯性系中位置和速度矢量的叉积计算惯性系中转移轨道的角动量矢量h时,我发现幅度之间存在显着误差(相对误差为-3.9521e-8)这个向量和前面在代码中计算的标量特定角动量。

这对我来说很奇怪,因为标量角动量用于计算速度矢量。我对精度损失发生在哪里感到困惑。

我尝试提供更精确的输入,特别是我一直在使用的 mu 值,但这根本没有改变相对误差。当我使用相同的叉积方法计算轨道1和2的特定角动量时,误差在机器精度的数量级上。

我希望 diffh 和 diffe 大约是机器精度,大约为 2.2e-16,但它们要大得多。具体来说,diffh = -3.9689e-08,diffe = 7.5474e-05。

更新:该错误似乎出现在我计算径向和速度矢量的某处,如果这有助于集中搜索。

0 投票
1 回答
487 浏览

python - 使用 rk4 绘制两个物体的轨道

我一直在尝试在 python 中使用 rk4 解决两个身体问题。但是,我的情节有些问题,似乎无法获得轨道,而只是一条略微弯曲的线。

我试图改变步长和初始值,但它没有让我到任何地方。这是我的太阳和地球系统代码。

这是我得到的情节。

地球“轨道”图。

0 投票
1 回答
74 浏览

python - Python没有在while循环中更新

尝试正则化二体系统的运动方程(稍后更新为三体)。我已经编写了一个 RK4 循环,并首先使用牛顿方程对其进行了尝试,并且效果很好。我现在正在尝试使用正则化方法来获得位置的二阶导数,即加速度。但是我只得到一条平坦的曲线。

问题似乎是打印时 eartha 和 suna 没有“更新”我每次迭代都获得相同的加速度,但我不确定是什么原因造成的。

0 投票
1 回答
279 浏览

python - 欧拉-拉格朗日的 Sympy 隐式微分

我正在尝试使用 sympy 的 idiff 函数对某些表达式进行隐式微分。

在这种情况下,rdot是 d r/ds,其中 s 是仿射参数。我想对相同的仿射参数 s 执行隐Ltdot式微分LphidotLrdot

我收到以下错误消息:

任何关于如何实现我想要的或任何帮助调试的想法将不胜感激!

0 投票
1 回答
492 浏览

javascript - 无法将 ThreeJS 网格添加到范围之外的场景 - THREE.Object3D.add:对象不是实例

我刚刚开始将 ThreeJS 与 STLLoader、OrbitalControls 和 TransformControls 模块一起使用。

当我在 STLLoader 函数范围内将网格添加到我的场景时,它按预期工作。但是,当尝试将其添加到范围之外时,它会引发错误THREE.Object3D.add: object not an instance

网格变量是全局声明的,因此我不能在加载程序范围之外使用它是没有意义的。不知道我做错了什么,但会感谢任何帮助!

0 投票
1 回答
403 浏览

three.js - 在 ThreeJS 中更改相机位置距离

在 ThreeJS 中,我试图让我的相机更靠近渲染的网格,这样它就占据了更多的视口。我弄乱了 camera.position.set 值,但这些似乎只是改变了旋转,实际上并没有让它离物体更近/更远。

我正在使用 OrbitControls 模块,并认为这可能会覆盖默认设置,但是对于如何更改距离有点困惑?

任何帮助深表感谢。

完整来源

在此处输入图像描述

0 投票
0 回答
52 浏览

simulation - 试图制作一个简单的二维 2 体轨道模拟器,但一切都在飞向太空?

我正在制作一个小型二维二维轨道模拟器。起始位置为 (0,0) 和 (1,0),我希望这两个物体在这两个位置之间来回移动,但它们会飞向太空。

我希望 x1、x2 在 0 和 1 之间几乎“反弹”,但相反,我让 x1 加速到无穷大,而 x2 加速到负无穷大。