clock = pygame.Clock()
delta = 0
-particles = [PointParticle((SCREEN_WIDTH / 3, SCREEN_HEIGHT / 2), 1.6e-19),
- PointParticle((SCREEN_WIDTH * 2 / 3, SCREEN_HEIGHT / 2), -1.6e-19),
- PointParticle((SCREEN_WIDTH / 2, SCREEN_HEIGHT / 2), 1.6e-19)]
+particles = [
+ PointParticle((SCREEN_WIDTH / 2, SCREEN_HEIGHT / 2), -1.6e-19),
+ PointParticle((SCREEN_WIDTH / 3, SCREEN_HEIGHT / 2), 1.6e-19),
+ # PointParticle((SCREEN_WIDTH * 2 / 3, SCREEN_HEIGHT / 2), 1.6e-19),
+ # PointParticle((SCREEN_WIDTH / 2, SCREEN_HEIGHT * 2 / 3), 1.6e-19),
+ # PointParticle((SCREEN_WIDTH / 2, SCREEN_HEIGHT / 3), 1.6e-19),
+ ]
while is_running:
+ pygame.display.set_caption(f"Electric Dipoles - {round(clock.get_fps())} FPS")
for event in pygame.event.get():
if event.type == pygame.QUIT:
is_running = False
particle.update(delta, particles)
screen.fill((255, 255, 255))
- # for particle in particles:
- # particle.draw_field_lines(screen)
+ for particle in particles:
+ particle.draw_field_lines(screen)
for particle in particles:
particle.draw_forces(screen)
for particle in particles:
BLUE = (0, 153, 255)
RED = (255, 43, 0)
- field_line_colour = (12, 12, 12)
+ field_line_colour = (100, 100, 100)
radius = 25
step_amount = 5
self.field_line_angles = list(range(0, 360, math.ceil(360 / self.num_field_lines))) # List of angles
self.field_lines = [[] for _ in range(self.num_field_lines)]
- self.line_step = pygame.Vector2(self.step_amount, 0) if self.charge > 0 else pygame.Vector2(-self.step_amount,
- 0)
+ self.line_step = pygame.Vector2(self.step_amount, 0) if self.charge > 0 else pygame.Vector2(-self.step_amount, 0)
self.forces = []
self.net_electric_force = pygame.Vector2(0, 0)
-1 if particle.charge * self.charge > 0 else 1)
self.forces.append(pygame.Vector2(electric_force * math.cos(angle), electric_force * math.sin(angle)))
self.net_electric_force += self.forces[-1]
+
+ self.position += self.net_electric_force * delta / 1000 * 2e33
+
def draw_field_lines(self, surf):
for line in self.field_lines:
--- /dev/null
+# Electric Dipole Simulation
+
+## Dependencies
+(You might have to uninstall pygame if it is already installed)
+```pip install pygame-ce library```
+
+## how to run
+run main.py
+
+## Controls
+drag particles around to move them.
+
+## Extra
+add more particles to particles list in main.py for more fun.