# Elastic Collisions in Three Dimensions

1. Jun 16, 2011

### krsbuilt

Alrighty, i'm working on a three dimensional physics simulator that does every operation in spherical coordinates and vectors, and i'm stuck on figuring out elastic collisions. are elastic collisions essentially trading momentum between the two colliding bodies? i'm assuming not, but i can't seem to find a simple equation to figure it out. by simple, i mean that just uses vectors. right now i've got two momentum vectors, and each vector can be added to (translate both vectors to Cartesian and add and convert back), subtraction (addition with the other vector being negated), multiplication and division (only via scalars) and i am able to convert back and forth between Cartesian. using that is there any simpler way of doing elastic collisions?

2. Jun 16, 2011

### BruceW

In general, two objects that collide elastically can be scattered in any direction.
(Elastic collision means that momentum in all 3 directions is conserved, and energy is conserved).
For two solid objects, the direction they get scattered in depends on the shape of the objects and the relative angle between the objects before they collide.
For hard spheres (like pool balls), the direction that the two balls scatter is the normal to the small area where the two balls touch. (That sounds dirty).

3. Jun 16, 2011

### krsbuilt

how would you calculate elastic collisions for any object of any shape. would you need to have the angle of the surface at the collision point of the two objects?

4. Jun 16, 2011

Staff Emeritus
Remember that the relative speed between the two objects is the same before and after the collisions. That will make your calculations simpler.

5. Jun 16, 2011

### krsbuilt

correct me if i'm wrong, but couldn't you treat any elastic collision like an elastic collision, but introduce some angular velocity if the shapes are weird? (which would be a completely different calculation)

Edit: any elastic collision as an elastic collision between spheres
Edit 2: if the shapes are weird and the angles are off

6. Jun 17, 2011

### BruceW

Yes, If you think about it, the contact force between the two objects is at the point where they touch, and the direction of these forces is to stop the two objects from going into each other at that point.

To do a true simulation of two many-sides objects, you would need to calculate where each of the faces were and check to see if collision happened between any of the faces of one object with any of the faces of the other object. Then when the objects collide, you'd need to calculate the angles between these faces to calculate the direction of the force.

It wouldn't be realistic, but it would probably look fairly realistic.

7. Jun 17, 2011

### krsbuilt

as in the case of a sphere the collision is always between two surfaces perpendicular to eachother. so when the two objects collide and the surfaces are not perpendicular the angles will be different, therefore changing the direction of the impulse. of course any collision including a round object is going to send the round object in the normal direction. objects that run into eachother off-center would result in some of the momentum transfering to angular momentum. i'm assuming the sine of the angle between the momentum of the colider and colidee plus the angle around the colidee (which will always be between pi/2 and -pi/2) multiplied by the momentum of the colider would be the angular momentum to add to the colidee (i calculate the collision twice, once for each body in the collision). Also, would i want to add the difference angle of the surfaces to the result momentum? and would i want to change the resulting linear momentum if angular momentum is part of the result? and i'm assuming the angular momentum i calculated is the linear equivelant of the angular momentum, so i would divide by the "radius" of the object, aka the distance from the point of impact to the center of gravity (which is a whole other problem for me to solve).

P.S. i apologize if that is hard to read, i'm kind of scatter-brained

8. Jun 17, 2011

### BruceW

Collision means one of the corners of object A touching one of the faces of object B (or the other way around). This is because it is incredibly unlikely that two of their faces will perfectly line up, or that two corners will meet exactly.
So lets say face i of object A touches corner j of object B. Then the force will be in the direction normal to face i and at the point of corner j. This force will act in opposite directions on A and B to push the two objects away from each other.
In actual collisions, the objects will squash a bit, and then spring back (imagine a tennis ball being hit by a racquet). So the value of the force, and the length of time it acts will depend on the material. In your simulation, I advise you just use values for these which make the simulation look fairly real. (I think a small time, with a fairly large force would look most realistic).
Now you have the force, its direction and how long it acts. The change in momentum is equal to the force times the time, so this gives you the change in momentum.
The component of the force pointing to the centre of gravity of the object contributes to the change in linear momentum.
The component of the force pointing at right-angles to the centre of gravity gives the change in angular momentum of the object. The angular momentum (assuming the object is roughly spherical) is equal to $m 2 \pi f r^2$ In this equation, m is the mass of the object, f is the frequency of rotation of the object. And r is the radius at which the force happened (in our case, it will be distance from the centre of gravity to the point of corner j at the time of collision).

Hope this helped, its actually a pretty complicated simulation to make, now that I've thought about it.

9. Jun 17, 2011

### krsbuilt

the only part in that i didn't get was "the direction normal to face i". i apologize if this is a newbie question, but what is and how would you calculate the normal direction between to surfaces (planes)

10. Jun 17, 2011

### BruceW

As I mentioned, there is only one plane in consideration (not two) because the corner of one object is touching one of the faces of the other.
(This is because for a collision to happen where two planes were touching, the angle of these two planes would need to be perfectly aligned, which doesn't happen).

If you've got a plane which satisfies the equation ax+by+cz=d then (a,b,c) is the normal vector to that plane. To get the unit vector normal to the plane, you make it so that $a^2 + b^2 + c^2 = 1$. The unit vector normal to the plane is more useful in this case, because it equals the direction of the force.

11. Jun 17, 2011

### krsbuilt

so essentially it's a vector perpendicular to the plane, and the impulse will be in that direction. sounds simple enough. now to translate that into java :P

12. Jun 17, 2011

### krsbuilt

ah, and another question... does the change in angular momentum affect the linear momentum? i'm assuming not, but i'm probably wrong.

13. Jun 18, 2011

### BruceW

No, once you calculate each of them, they are independent things.

14. Jun 18, 2011

### BruceW

And this is because we are talking about:
1) the angular motion of the object about an axis through its centre of gravity (angular momentum).
and 2) the motion of the centre of gravity of the entire body (linear momentum).
So the full motion of a particular part of the body is the combination of 1) and 2).
(These are not the general meanings of the two terms, but in this case, these two definitions will do).

15. Jun 18, 2011

### krsbuilt

well, with what i said, the whole theory of conservation of momentum is completely ignored, so i'll resolve that next. (i pulled the angular momentum from the linear momentum of the collision without changing the momentum post-collision)

16. Jun 19, 2011

### BruceW

No, linear momentum and angular momentum are both conserved.
The angular momentum of one object is exactly opposite to the angular momentum of the other object.
Therefore, the angular momentum was zero before collision and is zero after collision.