def resolve_collision(collision_detection, gravity, bodies): if collision_detection.is_set(): for ci in range(len(collision_detection.particles(0))): encountering_particles = Particles(particles=[collision_detection.particles(0)[ci], collision_detection.particles(1)[ci]]) colliding_particles = encountering_particles.get_intersecting_subset_in(bodies) merge_two_particles(bodies, colliding_particles) bodies.synchronize_to(gravity.particles)
def resolve_collision(collision_detection, gravity_code, bodies, time): print("Well, we have an actual collision between two or more objects.") print("This happened at time=", time.in_(units.yr)) for ci in range(len(collision_detection.particles(0))): # Multiple pairs of collisions could take place in one timestep encountering_particles = Particles(particles=[collision_detection.particles(0)[ci], collision_detection.particles(1)[ci]]) colliding_objects = encountering_particles.get_intersecting_subset_in(bodies) merge_two_bodies(bodies, colliding_objects) bodies.synchronize_to(gravity_code.particles) # Update bodies to contain 1 particle instead of 2