python绘制3d图形,python做3d动画
我正在寻找动画我的图形(下面)和我不确定从何处或如何开始,因为我没有动画经验。我不知道它是如何工作的,也不知道代码的结构应该是什么,所以如果有人能提供一个伪代码或一个算法,我将非常感激。我也提供了我用来绘制下图的代码。在在此输入代码
来自scipy.integrate导入odeint
将科学计算导入为(同science)科学
将数组作为铭牌导入
将matplotlib.pyplot作为血小板计数导入
从mpl_toolkits.mplot3d导入Axes3D
将matplotlib.animation作为犀鹃导入
#万有引力常数。
G=6.674e-11
#定义质量
m1=2
m2=3.5
m3=2.3
图形中的初始位置数(数组)
pos1=[-5,0,1]
pos2=[5,0,10]
pos3=[0,1,3]
p01=np.array(pos1)
p02=np.array(pos2)
p03=np.array(pos3)
#初始速度(数组)
vi1=[1,0.01,0]
vi2=[-5,0,1]
vi3=[0,-1,0]
v01=np.array(vi1)
v02=np.array(vi2)
v03=np.array(vi3)
#函数
def derivs_func(y,t,G,m1,m2,m3):
d1=y[:3]
d2=y[3:6]
d3=y[6:9]
v1=y[9:12]
v2=y[12:15]
v3=y[15:18]
dist 12=NP。sqrt((位置2[0]-位置1[0])* * 2(位置2[1]-位置1[1])* * 2(位置2[2]-位置1[2])* * 2)
dist 13=NP。sqrt((位置3[0]-位置1[0])* * 2(位置3[1]-位置1[1])* * 2(位置3[2]-位置1[2])* * 2)
dist 23=NP。sqrt((位置3[0]-位置2[0])* * 2(位置3[1]-位置2[1])* * 2(位置3[2]-位置2[2])* * 2)
dv1dt=m2 *(D2-D1)/距离12 * * 3 m3 *(D3-D1)/距离13 * * 3
dv2dt=m1 *(D1-D2)/距离12 * * 3 m3 *(D3-D2)/距离23 * * 3
dv3dt=m1 *(D1-D3)/距离13 * * 3平方米*(D2-D3)/距离23 * * 3
dd1dt=v1
dd2dt=v2
dd3dt=v3
derivs=np.array([dd1dt,dd2dt,dd3dt,dv1dt,dv2dt,dv3dt])
derivs3=derivs.flatten()
退货衍生产品3
yo=np.array([p01,p02,p03,v01,v02,v03])
y0=yo.flatten()
time=np.linspace(0,200,500)
sol=odeint(derivs_func,y0,time,args=(G,m1,m2,m3))
x1=sol[:3]
x2=sol[:3:6]
x3=sol[:6:9]
fig=plt.figure(figsize=(15,15))
ax=fig.add_subplot(111,projection=3d )
ax.plot(x1[:0],x1[:1],x1[:2],color=b )
ax.plot(x2[:0],x2[:1],x2[:2],color=m )
ax.plot(x3[:0],x3[:1],x3[:2],color=g )
ax.scatter(x1[-1,0],x1[-1,1],x1[-1,2],color=b ,marker=o ,s=30,label=Mass 1 )
ax.scatter(x2[-1,0],x2[-1,1],x2[-1,2],color=m ,marker=o ,s=90,label=Mass 2 )
ax.scatter(x3[-1,0],x3[-1,1],x3[-1,2],color=g ,marker=o ,s=60,label=Mass 3 )
ax.legend()
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。