# Multi-body Collisions

1. Jul 22, 2012

### rorix_bw

Looking at some old code I wrote for a game.

It has objects that collide, and rebound from each other. Where two collide, or one collided with a boundary, I knew how to work out the new trajectories and speeds.

In the case of multiple body collisions I had no clue. I broke them down randomly into pairs of 2 and just kept resolving until everything was moving again [EDIT: and nothing interpenetrated] :-)

How you actually do it for multi-body systems?

2. Jul 22, 2012

### krd

You sum them.

If three objects collide simultaneously, you can add the vectors of two of them, and treat the result as a single object, involved in single collision. Then repeat the same process for the other two.

I just did a google on this and there seems to be a lot more about it on game developer forums.

3. Jul 22, 2012

### rorix_bw

deleted post, sec :) will edit.

EDIT: No, i still don't understand it.

Each = is 1 unit of velcoity. A and C contact B from opposite sides while B is staitonary.

A---->B<----C

Now doing (A+B)

A----> + B = <--A B-->

We treat that (A+B) as a single object with a combined velcoity ... which is zero as they cancel.

We collide C with it, we get this final result for C

C-->

And why is B moving?

Last edited: Jul 22, 2012
4. Jul 22, 2012

### Simon Bridge

With A and C striking B with equal and opposite momenta you can see they should rebound leaving B stationary.

In your case you ended up with B moving because you started out colliding A and B ... which, if C wasn't there, would have ended up moving to the right -->.
(I see your model has them with zero net momentum after the collision - which is broadly incorrect. You haven't conserved momentum. I'd have expected A to come to rest in a simple model.)

Anyway - the next step would intuitively have B collide with C ... following your rules, then B and C will now be moving in opposite directions. I think krd was expecting you to treat A+B as a single system in the second collision somehow.

However, the calculation will turn out differently depending on which pair you compute first. There is no analytic solution: google for "three body problem".

We usually do it numerically, or make some sort of approximation (or series of approximations).

In computer games you can get around it by deciding that you cannot get three objects colliding at the same time ... two will always hit before the third one does. There are lots of different approaches and, as krd observed, it is a big topic.

5. Jul 23, 2012

### rorix_bw

sacrasm mode on:

What kind of crap is "no analytic solution"? :-) From my notes I see that I spent ages puzzling over it in the dark days when you couldn't google anythng. I was expecting it be all done and dusted now, with physics games everywhere, but now I see that they ALL CHEAT!

Time to lock myself in away in seclusion until either I break the problem or it does me in! Nobel or funeral bell!

sarcasm mode off:

Maybe something in this post is not quite true. I'll have a look at ways of cheating it first. Thanks Simon.

edit: So does mean I can sue anyone selling "realistic billiards game"? :-)

Last edited: Jul 23, 2012
6. Jul 23, 2012

### Simon Bridge

That's what Charles Fort said :)

eg. the Solar System is a many-body system ... we solve it approximately and then work out the small effects using a perturbation method until what we get is close enough to what we measure to make good predictions. It works because of the scales involved - Jupiter does affect the Earth but the Sun is a much bigger influence.

Unfortunately "realistic" is not the same as "accurate model of reality". It just has to be good enough to fool you. Besides, I don't think you'd get much per person in the inevitable class action.

I've noticed there are situations in the "realistic" snooker and pool games where the balls jiggle around a lot more in small collisions that I experience IRL so I suspect some ordering of the interactions is happening.

It's hard to imagine a scale where you'd get two simultaneous collisions in real life though ... so, for a sufficiently short time step, sequencing the collisions probably makes sense.