]> Skullheadx's Git Forge - Collision-Simulation.git/commitdiff
clean up file + grid of particles
authorSkullheadx <admonty1@gmail.com>
Thu, 26 Jan 2023 17:27:30 +0000 (12:27 -0500)
committerSkullheadx <admonty1@gmail.com>
Thu, 26 Jan 2023 17:27:30 +0000 (12:27 -0500)
collision.py
display.py

index 3df75408771b14d01b56600a8f2e6a9a222e601c..492a576979e0d4c0b439ebd3a5b51388d5c0d7e0 100644 (file)
@@ -1,4 +1,6 @@
 from pygame import Vector2
+
+
 def handleBoxCollision(particle, box):  # Discrete Collision Detection
     if particle.left <= box.left or particle.right >= box.right:
         particle.velocity.x *= -1
@@ -6,10 +8,11 @@ def handleBoxCollision(particle, box):  # Discrete Collision Detection
         particle.velocity.y *= -1
 
 
-def handleParticleCollision(particle1, particle2): # https://www.vobarian.com/collisions/2dcollisions2.pdf
-    if particle1.position.distance_to(particle2.position) <= particle1.radius + particle2.radius and particle1 != particle2:
+def handleParticleCollision(particle1, particle2):  # https://www.vobarian.com/collisions/2dcollisions2.pdf
+    if particle1.position.distance_to(particle2.position) <= particle1.radius + particle2.radius and \
+            particle1 != particle2:
         n = particle2.position - particle1.position
-        un = n/n.magnitude()
+        un = n / n.magnitude()
         ut = Vector2(-un.y, un.x)
 
         v1 = particle1.velocity
@@ -23,11 +26,13 @@ def handleParticleCollision(particle1, particle2): # https://www.vobarian.com/co
         v1t_prime = v1t
         v2t_prime = v2t
 
-        v1n_prime = (v1n * (particle1.mass - particle2.mass) + 2 * particle2.mass * v2n) / (particle1.mass + particle2.mass)
-        v2n_prime = (v2n * (particle2.mass - particle1.mass) + 2 * particle1.mass * v1n) / (particle1.mass + particle2.mass)
+        v1n_prime = (v1n * (particle1.mass - particle2.mass) + 2 * particle2.mass * v2n) / (
+                particle1.mass + particle2.mass)
+        v2n_prime = (v2n * (particle2.mass - particle1.mass) + 2 * particle1.mass * v1n) / (
+                particle1.mass + particle2.mass)
 
         v1_prime = v1n_prime * un + v1t_prime * ut
         v2_prime = v2n_prime * un + v2t_prime * ut
 
         particle1.velocity = v1_prime
-        particle2.velocity = v2_prime
\ No newline at end of file
+        particle2.velocity = v2_prime
index 607cffe612829997276df4c93b7c5c95029997d9..4aed9b9012d6b3ef1de8f74ce11a6aa6e6d43a28 100644 (file)
@@ -9,11 +9,11 @@ pygame.init()
 
 
 class Display:
-    WIDTH, HEIGHT = 640, 640
+    WIDTH, HEIGHT = 1080, 720
     DIMENSIONS = (WIDTH, HEIGHT)
     CENTER = (WIDTH / 2, HEIGHT / 2)
 
-    FPS = 60
+    FPS = 0
     COLLISION_LAYERS = 4
 
     def __init__(self, window_name="Pygame"):
@@ -22,9 +22,17 @@ class Display:
         pygame.display.set_caption(window_name)
 
         self.collision_objects = {layer: [] for layer in range(self.COLLISION_LAYERS)}
-        self.particles = [Particle(self.CENTER, (random.random() * 0.75, random.random() * 0.75), (0, 0), 35, 15, self.collision_objects[0]),
-                          Particle((self.WIDTH/3, self.HEIGHT/3), (random.random() * 0.75, random.random() * 0.75), (0, 0), 35, 25, self.collision_objects[0])
-                          ]
+        self.particles = []
+
+        n = 5
+        for i in range(1, n):
+            for j in range(1, n):
+                m = random.randint(35, 45)
+                speed = 0.1
+                self.particles.append(Particle((self.WIDTH / n * i, self.HEIGHT / n * j),
+                                               ((random.random() - 0.5) * speed, (random.random() - 0.5) * speed),
+                                               (0, 0), m, 100, self.collision_objects[0]))
+
         self.box = Box((0, 0), self.WIDTH, self.HEIGHT)
 
         self.collision_objects[0] += self.particles
@@ -40,6 +48,7 @@ class Display:
             self.draw(screen)
             pygame.display.flip()
             delta = clock.tick(self.FPS)
+            print(delta)
         pygame.quit()
 
     def update(self, delta):