使用matplotlib的3D动画,显示身体围绕固定点旋转

时间:2013-06-14 05:26:59

标签: python matplotlib

我最近开始使用python。目前我正在开发一个模拟二进制开始运动的项目。

我想用围绕固定中心旋转的球体来表示开始。 我将x,y,z值存储在三个不同的列表中。

我在互联网上看了很多,却找不到任何帮助。我在2D中成功模拟了它,但我想要它的3D版本。

我在Python中使用matplotlib。

任何帮助都会很明显。

替代可能性:我可以为x,y和z的每个值获得单独的图,以便我可以缝合它们并制作动画吗?我的主要问题是,如何用球体表示每个(x,y,z)点?

1 个答案:

答案 0 :(得分:3)

VPython 对于此类可视化效果很好。例如,要获得3D球体,只需使用命令sphere(pos=(1,2,3)),动画就非常简单。 VPython基本上是针对你所讨论的可视化类型而设计的,并且它会快速运行,而在matplotlib中,你必须从一个球体的方程式开始,它会慢慢运行。

这是一个简单的动画,显示一个球在盘子上弹跳(source):

from visual import *

floor = box (pos=(0,0,0), length=4, height=0.5, width=4, color=color.blue)
ball = sphere (pos=(0,4,0), radius=1, color=color.red)
ball.velocity = vector(0,-1,0)
dt = 0.01

while 1:
    rate (100)
    ball.pos = ball.pos + ball.velocity*dt
    if ball.y < ball.radius:
        ball.velocity.y = abs(ball.velocity.y)
    else:
        ball.velocity.y = ball.velocity.y - 9.8*dt

ball, rendered in a visual python window

在评论中,其他人推荐使用VTK(或MayaVi,这是VTK的一个不错的包装器)。 VTK将运作良好,但更难学习。我将使用VTK进行复杂的3D视觉数据探索,但对于您的问题,它是极端的过度杀伤。