我最近开始使用python。目前我正在开发一个模拟二进制开始运动的项目。
我想用围绕固定中心旋转的球体来表示开始。 我将x,y,z值存储在三个不同的列表中。
我在互联网上看了很多,却找不到任何帮助。我在2D中成功模拟了它,但我想要它的3D版本。
我在Python中使用matplotlib。
任何帮助都会很明显。
替代可能性:我可以为x,y和z的每个值获得单独的图,以便我可以缝合它们并制作动画吗?我的主要问题是,如何用球体表示每个(x,y,z)点?
答案 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
在评论中,其他人推荐使用VTK(或MayaVi,这是VTK的一个不错的包装器)。 VTK将运作良好,但更难学习。我将使用VTK进行复杂的3D视觉数据探索,但对于您的问题,它是极端的过度杀伤。