首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >行星Three.js (x,y,z)中太阳系可视化的轨道力学

行星Three.js (x,y,z)中太阳系可视化的轨道力学
EN

Stack Overflow用户
提问于 2014-05-15 08:43:02
回答 3查看 2.5K关注 0票数 3

我正在研究Three.js中的太阳系可视化。现在,我的行星有基本的圆形轨道,我想使我的模型尽可能真实。我浏览了wiki和一些文章,但是这些东西相当先进。

我不关心千百年来的轨道,我只想要一个接近现实的模型,它将证明:

  1. 正确的椭圆轨道
  2. 倾斜度
  3. 动态变化速度(在近日点更快)

我想知道是否有一种足够复杂的方法来计算x,y,z,在给定的t (动态变化)上,可能使用轨道元素。

希望我说得很清楚。谢谢

EN

回答 3

Stack Overflow用户

发布于 2014-05-15 11:42:56

也许你应该试试轨道的二维投影。在这种情况下,您只需将ellipe参数化为向量函数,例如ɣ(x(t),y(t))。

然后,为了应用物理方面,想象两个质量中心,太阳M和一个给定的行星μ。行星F上的力是由F=GμM /x~(2+)ɣ_x_2给出的,加速度遵循牛顿第二定律,a=GM/ɣ_s_2,总是指向较大的质量M。

为了设置曲线http://en.wikipedia.org/wiki/Ellipse#Equations,可以使用ɣ

票数 1
EN

Stack Overflow用户

发布于 2014-05-15 21:16:14

如果你对显示几个关键元素的近似值感到满意,那么你就可以尝试计算一张几年内所有行星的查表。比方说,海王星的轨道周期是164年,因此,计算每个月所有行星在这一期间的位置,应该会给出一个相对容易管理的比例表。要获得轨道速度变化的可视化表示,需要更精细的分辨率。计算完毕后,您只需构造一个动画来绘制位置。

计算相当复杂。我不打算在这里重复计算--它太长了--但是您可以找到一个很好的描述这里,以及用QBasic编写的示例程序

主要步骤是:

找出行星在其轨道上的位置--找出从元素日期起的天数--从平均经度和日运动中找出平均异常,用中心方程找到真正的异常--找到行星的半径矢量

将这个位置引用到黄道,从而找到行星的日心黄道坐标。

一旦您有了日心坐标,将它们转换为您自己的参考框架(链接的页面显示了如何对地心坐标这样做,但这是没有用的。)你需要自己解决这个问题。)将坐标添加到您的表中。

您可以尝试实时运行计算,这将更加灵活,但可能会限制帧速率。这里可能需要做一些实验。

感谢基思伯内特(作者的链接页)的细节,我已经浓缩了上面。

票数 1
EN

Stack Overflow用户

发布于 2014-09-26 01:52:40

下面是一些在c++中完成任务的代码。尽管它不以日期作为参数。这就有点复杂了。但是--用正确的值替换i应该可以做到这一点。(我用这个代码画出绕太阳的轨道。

代码语言:javascript
复制
double x = distanceFromSun * orbitScaleFactor;
double y = sin(inclination) * distanceFromSun * orbitScaleFactor;
double z = semiMinorAxis * orbitScaleFactor;

for (double i = 0; i < 2.0 * PI; i += PI / 32.0) {
    x = cos(i) * x;
    y = cos(i + lonOfAscendingNode) * y;
    z = sin(i) * z;
}

虽然你的问题特别提到了javascript,但我不觉得给你提供c++代码感到内疚--我认为这个等式是你真正想要的。

您可以在这里看到我的完整代码:https://github.com/SyntaxRules/SolarSystemSimulation/blob/master/src/Planet.cpp

您也可以在那里找到变量的信息。:)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23673275

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档