Guest User

Untitled

a guest
Nov 18th, 2018
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.96 KB | None | 0 0
  1. from numpy import array, where, abs
  2. from numpy.random import random
  3.  
  4. from canvas import Canvas
  5.  
  6. class ParticleCanvas(Canvas):
  7. def __init__(self,parent,dpi=100.0):
  8. Canvas.__init__(self,parent,dpi)
  9. self.pos = None
  10. self.vel = None
  11.  
  12. def reinitialize(self, npart):
  13. #self.pos = 2.0*(random((2,npart))-0.5)
  14. self.pos = (random((2,npart)))
  15. self.vel = 2.0*(random((2,npart))-0.5)
  16. self.particle_plot = None
  17.  
  18. def move(self):
  19. if self.pos is None or self.vel is None: return
  20. dt = 0.01
  21. # change velocity if they go beyond box
  22. self.vel[where(abs(self.pos + dt*self.vel)>1.0)] *= -1.0
  23. self.pos += dt*self.vel
  24.  
  25. def on_draw(self):
  26. if self.pos is None or self.vel is None: return
  27. if self.particle_plot is None:
  28. self.particle_plot, = self.axes.plot(self.pos[0],self.pos[1], 'ro', animated=True)
  29. self.particle_plot.set_xdata(self.pos[0])
  30. self.particle_plot.set_ydata(self.pos[1])
  31. self.axes.draw_artist(self.particle_plot)
Add Comment
Please, Sign In to add comment