问题标签 [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.
c++ - 计算给定轨道离心率的椭圆和从中心点开始的顶点
计算行星绕太阳运行的椭圆轨道涉及以下公式:
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
optimization - XNA游戏开发轨道运动
我正在尝试开发将在外太空进行的游戏。我们决定创建一个完整的 3D 环境。我们的目标是创造无限的世界——它会在需要时自动创建自己。我们的问题之一是如何以最佳方式创建行星的轨道运动。将有数百个,并且在每一帧中计算它们的新位置听起来非常昂贵。
我们有两个想法来处理它:
- 创建行星后计算电路中的每个位置(取决于时间),然后在游戏期间从内存中读取它。但是,这听起来像是对内存的极大浪费。
- 仅当它们在相机视野范围内时才计算它们的运动。但它会在屏幕外时与其他对象的碰撞检测产生另一个问题。
我的问题是:有人知道应该怎么做吗?我想知道我们是否应该专注于 CPU 或内存使用优化?
physics - 轨道力学:两颗行星之间形成特定角度的估计时间
我试图想出一个公式来估计两个轨道行星将形成目标角度的重复时间。为了简单起见,我做了一些非常重要的假设:
- 假装开普勒定律不存在
- 假装速度是恒定的
- 假装两颗行星都沿着相同的轨道运行
- 假设这条路径是一个圆,而不是一个椭圆
这是帮助理解我的挑战的图表(Google Docs): https ://docs.google.com/drawings/d/1Z6ziYEKLgc_tlhvJrC93C91w2R9_IGisf5Z3bw_Cxsg/edit?usp=sharing
我在电子表格(Google Docs)中运行模拟并将数据存储: https ://docs.google.com/spreadsheet/ccc?key=0AgPx8CZl3CNAdGRRTlBUUFpnbGhOdnAwYmtTZWVoVVE&usp=sharing
使用模拟中存储的数据,我能够确定一种方法来估计两个轨道行星形成特定角度的第一次出现:
初始状态
我执行了这些步骤:
使用这个逻辑,然后我回到了一个使用 Astro 的瑞士星历表的天文学程序。估计的天数让我足够接近,可以舒适地确定两个行星达到所需角度的日期和时间,而不会影响应用程序性能。
这就是我的问题所在:鉴于我所知道的信息,我应该采取什么方法来估计再次达到 90 度角时的再次发生时间?
感谢您抽出宝贵时间提前阅读本文。
javascript - Three.js 中太阳系可视化的轨道力学(x,y,z 表示行星)
我正在使用 Three.js 进行太阳系可视化。现在我的行星有基本的圆形轨道,我想让我的模型尽可能逼真。我浏览了 wiki 和一些文章,但这些东西非常先进。
我并不真正关心成千上万年的轨道,我只想要一个接近蜜蜂的现实模型,它将证明:
- 正确的椭圆轨道
- 倾角
- 动态变化的速度(近日点更快)
我想知道是否有一种足够复杂的方法来计算我的行星在给定t (动态变化)下的x,y,z可能使用轨道元素。
希望,我把我的想法说清楚了。谢谢
python - Python Matplotlib 动画帧重叠
我正在研究我的轨道计划,我目前只以 -1023 的向下 (-y) 速度为月球设置动画。动画有效,但是当下一帧出现时,每一帧都停留在图形上:
这是我的代码:
python - Python Matplotlib:将轨道程序变成 3D
我已经完成了我的 2D 轨道程序,使用真实的物理,它非常酷。我现在想做的一件事是在方程中添加“z”力、加速度和速度。我已经这样做了,但现在程序只是一条围绕垂直线的垂直线:
由于没有像圆一样创建球体的代码,因此我需要使用 trig:
这是代码:
我已经测试了在没有这个程序的情况下制作圆圈的三角函数,它可以工作。另外,关于制作曲面球体而不是线框球体的任何建议?
cocos2d-iphone - 如何在 cocos2d 花栗鼠中应用轨道重力
我正在 Cocos2d - Chipmunk - Spritebuilder 中构建一个 IOS 游戏。我需要让一个角色绕着一个点旋转,而我在用真实的物理实现轨道时遇到了一些困难。到目前为止,我已经尝试了两种方法,一种是创建一个从玩家到行星的距离关节,然后对玩家施加 90 度的力,在距离关节的末端和绘制的假想线之间创建一个角度与它成 90 度角。他疯狂地四处走动,这种方法对我不起作用。
然后我尝试在距离行星半径的圆周上计算 180 个点(这是检测和实现其对玩家的影响的界限) - 然后在预定的更新方法中 [character.physicsbody applyForce:nextCircumferencePoint]; 这是行不通的,因为他没有完全遵循这条路,而且离这条路很远。我在想我还需要对这颗行星施加一个引力,这会使他绕着它转。虽然我不知道如何计算那个力,应用它,或者它是否会有所帮助。
第三种永远不会奏效但用于测试的方法是将他的位置设置为下一个圆周点。他确实在轨道上运行,但任何碰撞都不起作用(例如,如果一块太空垃圾挡住了他的路。)他只会被定位在任何其他物体的正上方。如果您不需要碰撞,这个世界很棒,正在编写自己的物理引擎。这不是一种优雅的做事方式,所以会避免它。
请更正我已经完成的任何事情并告诉我它将如何工作,或者阐明其他选项以及如何实施它们。
javascript - Javascript 精度缓解
我知道 javascript 舍入错误相当棘手,但我想要一些建议。
减轻我的应用程序舍入误差的最佳方法是什么?我有一个立方体,应该是围绕一个大质量的轨道。立方体在每个轨道上都会获得大量的轨道动量,并且最终将在没有任何干预的情况下达到逃逸速度。
我需要一种轻量级的方法来防止这种情况发生。
我最好的选择是尝试找到一种方法来修复我的数字,还是我会更好地使用基于逻辑假设的错误纠正,即应该在哪里捏造它并将其放回它所属的位置?
我的物理功能在这里:
function physGravity(a, b){
var grav = new THREE.Vector3(0, 0, 0);
grav = grav.subVectors(a.position, b.position);
var r = grav.lengthSq();
var A = (G)*(b.mass)/(r);
grav = grav.normalize();
grav.multiplyScalar(-A);
a.gravity = grav;
}
c++ - Nbody 代码的近距离接触条件
我使用跳跃算法编写了一个简单的 N 体代码。现在我想做的是创造一个近距离接触的条件。我希望代码让我知道每当两个粒子接近某个距离时。这就是我想出的,在我看来它应该可以工作,但事实并非如此。它在 c++ 中:在代码中:num 是粒子的数量,r[num][3] 是一个全局 2d 数组,它保存每个粒子的 3d 位置(x,y,z 坐标)。我只是在写函数check_collisions,它在主函数中执行,在一个时间循环下,对系统进行进化。我试图做的是存储任何给定粒子对之间的距离,并将它们与某个距离进行比较(在本例中为 rad[i]+rad[j],其中 rad[num] 是半径的全局数组每个粒子)。如果 2 个粒子之间的距离小于 rad[i]+rad[j],那么我希望变量 dummy 增加。然后我想对那些粒子做一些事情,让其他的保持完整。问题是 dummy 无论如何仍然为 0。我独立检查我的一个试验中的 2 个粒子在几个时间步长内实际上彼此接近,但虚拟变量保持为零。这是功能
}
astronomy - 地球静止轨道与 pyephem?
我正在尝试在 pyephem(_n = 1.0
每天转数)中创建一个地球静止轨道。我想通过将观察者直接放置在卫星下方并验证 alt='90.0' 和 az=0 来验证它是否是地球静止的。对于我的测试,我将观察者置于赤道 100 度 W 经度处。这是我的代码:
和输出:
我发现改变观察者经度不会改变输出。我希望sat._raan
设置卫星的头顶位置(sat.sublong
),但这对输出也没有影响。我一直得到 alt=-90:00:00.0 az=0:00:00.0。(朝向地球中心)和 sublat,sublong 没有任何意义。
更新
奇怪的,不变的输出的原因sublat=1389660529:33:00.8
是由于sat._epoch
默认情况下是'1899/12/31 12:00:00',以及这个问题。设置sat._epoch = obs.date
可以解决这个问题,但我仍然不确定如何实现定义天空位置固定在所选地球坐标上方的地球静止轨道的目标。