Advertisement
Guest User

Untitled

a guest
Oct 17th, 2019
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.00 KB | None | 0 0
  1. class InteractionField:
  2. def __init__(self, F):
  3. self.points = []
  4. self.F = F
  5.  
  6. def move_all(self, dt):
  7. for p in self.points:
  8. p.move(dt)
  9.  
  10. def intensity(self, coord):
  11. proj = Vector(*[0 for i in range(coord.dim())])
  12. single_point = Point(Vector(), mass=1.0, q=1.0)
  13. for p in self.points:
  14. if coord % p.coords < 10 ** (-10):
  15. continue
  16. d = p.coords % coord
  17. fmod = self.F(single_point, p, d) * (-1)
  18. proj = proj + (coord - p.coords) / d * fmod
  19. return proj
  20.  
  21. def step(self, dt):
  22. self.clean_acc()
  23. for p in self.points:
  24. p.accinc(self.intensity(p.coords) * p.q)
  25. p.accelerate(dt)
  26. p.move(dt)
  27.  
  28. def clean_acc(self):
  29. for p in self.points:
  30. p.clean_acc()
  31.  
  32. def append(self, *args, **kwargs):
  33. self.points.append(Point(*args, **kwargs))
  34.  
  35. def gather_coords(self):
  36. return [p.coords for p in self.points]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement