Simple Sphere-Sphere Collision Detection and Collision Response
Collision Detection
To determine if two spheres are colliding, we take the sum of the radiuses and compare it with the length from the centers of the spheres. If the lenght is smaller than the sum of the radiuses, we have a collision.
Difference vector (the length is the distance between those two spheres):

Then the length is computed:

Sum of the radiuses:

If distance<sumradius the we have a collision to take care of.
Collision Response
This is the little more trickier part, but with some basics explained, it should be pretty straight forward.
First, find the vector which will serve as a basis vector (x-axis), in an arbiary direction. It have to be normalized to get realistic results.


Then we calculate the x-direction velocity vector and the perpendicular y-vector.





Same procedure for the other sphere.






Then we mix and play around with some of Newtons laws to obtain a formula for the speed (in vector format) after the collision.


And it actually works!
Sample application:
Source code in subversion repository.

Popularity: 17% [?]
I was looking for a clear tutorial on collision response and i found it here.
great post, very usefull!
Thanks
I had to refresh my dusty brain, and this was perfect for that!
Thanks!
This information was very usefull in a demo that i’m trying to build in XNA. Thanks