import numpy as np
import pylab as py
from matplotlib import animation

taille=400
lim=10
x=np.linspace(-lim,lim,taille)
y=x

[X,Y]=np.meshgrid(x,y,indexing='xy')

y1=2
y2=-y1
r1=np.sqrt(X**2+(Y-y1)**2)
r2=np.sqrt(X**2+(Y-y2)**2)

w=4*np.pi
delta_t=0.01
t=0
k=1.0*np.pi
a1=1
a2=1

amplitude=a1*np.cos(k*r1-w*t)+a2*np.cos(k*r2-w*t)
#ne prend pas en compte la décroissance en 1/r que devrait avoir les ondes

#Préparation des figures
fig=py.figure(figsize=[16,8],facecolor='w')
fig.add_axes([0.5,0.05,0.45,0.9],aspect='equal')
image=py.imshow(amplitude, extent = [-lim,lim,-lim,lim])
py.plot([0],y1,'wo',markersize=5)
py.plot([0],y2,'wo',markersize=5)
py.axis([-lim,lim,-lim,lim])
py.axis('off')
fig.add_axes([0.05,0.05,0.4,0.4],aspect='equal')
image2=py.imshow(a1*np.cos(k*r1-w*t),  extent =[-lim,lim,-lim,lim])
py.plot([0],y1,'wo',markersize=5)
py.plot([0],y2,'wo',markersize=5)
py.axis([-lim,lim,-lim,lim])
py.axis('off')
fig.add_axes([0.05,0.5,0.4,0.4],aspect='equal')
image3=py.imshow(a2*np.cos(k*r2-w*t), extent = [-lim,lim,-lim,lim])
py.plot([0],y1,'wo',markersize=5)
py.plot([0],y2,'wo',markersize=5)
py.axis([-lim,lim,-lim,lim])
py.axis('off')

def animate(i):#Mise à jour des figures à chaque nouvelle frame
    t=i*delta_t
    amplitude=a1*np.cos(k*r1-w*t)+a2*np.cos(k*r2-w*t)
    image.set_data(amplitude)
    py.title('t=%.2f s'%(t))
    image2.set_data(a1*np.cos(k*r1-w*t))
    image3.set_data(a2*np.cos(k*r2-w*t))

anim = animation.FuncAnimation(fig,animate,frames=int(10/delta_t),interval=20)
#anim.save('basic_animation.mp4', fps=30)
py.show()
