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