From: Skullheadx <704277@pdsb.net> Date: Tue, 17 Jan 2023 01:35:16 +0000 (-0500) Subject: wip X-Git-Url: http://git.skullheadx.com/nixos/static/now.html?a=commitdiff_plain;h=refs%2Fheads%2FContinuous-Collision-Detection;p=Collision-Simulation.git wip --- diff --git a/collision.py b/collision.py index 7bd892c..33ca95b 100644 --- a/collision.py +++ b/collision.py @@ -1,5 +1,23 @@ -def handleBoxCollision(particle, box): # Discrete Collision Detection +from linear_interpolation import LinearInterpolation +import pygame + + +def handleBoxCollision(particle, box): # Continuous Collision Detection if particle.left <= box.left or particle.right >= box.right: particle.velocity.x *= -1 if particle.bottom >= box.bottom or particle.top <= box.top: particle.velocity.y *= -1 + + next_frame, _ = particle.get_next_frame(particle.position, particle.velocity, 1) + x = LinearInterpolation(particle.position.x, next_frame.x) + y = LinearInterpolation(particle.position.y, next_frame.y) + t_c = (box.bottom + particle.radius - next_frame.y) / (particle.position.y - next_frame.y) + + point_of_collision = pygame.Vector2((x.evaluate(t_c), y.evaluate(t_c))) + + print((x.evaluate(t_c), y.evaluate(t_c)),particle.position, next_frame, t_c) + + # particle.position -= next_frame - point_of_collision + + + diff --git a/display.py b/display.py index 77f738e..18ca041 100644 --- a/display.py +++ b/display.py @@ -22,7 +22,7 @@ class Display: self.collision_objects = {layer: [] for layer in range(self.COLLISION_LAYERS)} - self.particles = [Particle(self.CENTER, (0, 0.5), (0, 0), 15, self.collision_objects[0])] + self.particles = [Particle(self.CENTER, (1, 2), (0, 0), 15, self.collision_objects[0])] self.collision_objects[0] += self.particles self.box = Box((0, 0), self.WIDTH, self.HEIGHT) self.collision_objects[0].append(self.box)