我正在参加一个课程项目,以预测太阳系行星(和其他物体)的速度和位置。如果我可以可视化预测的对象数据,如果可以生成 3D 图像,如果在视频中这太棒了,那将是非常酷的。你知道任何库可以让我使用这些数据来生成图像或视频吗?(我不在乎用哪种语言)
数据:
- 模拟步骤(视频的时间线步骤)
- 对象的位置 - 对象的
半径和/或颜色
在此先感谢,欢迎任何建议。
我正在参加一个课程项目,以预测太阳系行星(和其他物体)的速度和位置。如果我可以可视化预测的对象数据,如果可以生成 3D 图像,如果在视频中这太棒了,那将是非常酷的。你知道任何库可以让我使用这些数据来生成图像或视频吗?(我不在乎用哪种语言)
数据:
- 模拟步骤(视频的时间线步骤)
- 对象的位置 - 对象的
半径和/或颜色
在此先感谢,欢迎任何建议。
对于这种类型的可视化,我使用了几种方法(全部通过 Python):
VPython非常容易学习,您将能够在几分钟内获得围绕太阳旋转的行星的动态 3D 可视化。也有帮助制作电影的贡献,但我没有使用这些。
也可以直接使用 OpenGL,例如在 wxPython 窗口中通过PyOpenGL,或者使用例如PyGlet。这种方法比 VPython 更基本一些,可能需要更长的时间,而且我知道制作电影的唯一方法是通过屏幕截图等。
VTK是一个非常令人印象深刻的 3D 可视化库,但学习起来要困难得多。VTK 与其他产品一样,将进行开箱即用的动态可视化,并且它是唯一具有用于制作图像和电影的内置模块的产品。虽然它是一个复杂得多的库,但如果你想要行星围绕恒星旋转,并在矢量场离子风暴中绘制气体云的等高线图,VTK 可以做到。还有MayaVi,它使 VTK 更易于访问和交互。
我有一个非常粗略的想法,可能会作为一个有用的起点,尽管它需要相当多的充实才能看起来很专业。您的数据是否给出了每个行星在给定时间点在太空中的位置?如果是这样,您可以:
1)如果您的位置数据最初是 3-D,则将其投影到两个空间中(允许您使用 2-D 方法来表示仍然看起来像在屏幕上以 3-D 显示的数据)
2)结果应该是一系列存储行星位置的二维矩阵。如果矩阵元素对应于行星的位置,则令它们为 1,否则令它们为 0。(如果你要绘制矩阵,它看起来就像黑色背景上的几个白点。)
3)使用形态膨胀来获取每个位置点并将其邻居的值设置为 1 而不是 0,这样当您绘制时,您会得到一组以步骤(2)中的点为中心的圆盘形白色对象。
4)使用程序将(3)中的每个矩阵写入图像文件,并将它们放在一个公共文件夹中。
5) 在运行时,使用另一个程序从文件夹中一次导入每个图像,在同一个图形窗口的屏幕上显示它们。结果应该是表示时间 t 的行星的每张图像都替换了时间 (t-1) 的图片。这在视觉上应该与在该窗口中播放视频文件一样。
最终的结果将是在黑色背景下在轨道上显示一堆白色圆圈的动态画面。那会有用吗?