Jump to content
  • Advertisement
Sign in to follow this  

Sphere-to-Sphere Momentum After Collision

This topic is 3510 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hi, I was wondering if someone could help me out? I'm making a basic physics simulation with bouncing balls, treating them as particles so I dont need to take rotation and friction into account. My current method for sphere-to-sphere collision response is as follows:
        //Find the line of impact
	Vector3f normal1 = ball->Position() - ball2->Position();
	Vector3f normal2 = Vector3f(normal1.ScaledBy(-1));

	//VR = VI – 2(VI.N)N
	Vector3f refVel1 = (normal1*((1+eCof1)*(-initVel1.Dot(normal1))))+ initVel1;
	Vector3f refVel2 = (normal2*((1+eCof2)*(-initVel2.Dot(normal2))))+ initVel2;

So all it'd doing is finding the line of impact between the 2 balls and reflecting their velocities around this line. The eCof value is the coefficient of elasticit of the ball. Each ball also has a mass value so I would like to add this into the equation, but I'm not sure how. I know that momentum is only conserved along the line of impact and I know that the total momentum before and after the collision is the same, but I dont know how much momentum is transfered. Does any one know how to do this, any help would be much appreciated. I have made another method trying to do this which didnt work that I could post as well if it would be any help.

Share this post

Link to post
Share on other sites
starting from scratch, without your current thinking.
represent the new velocities using an impulse as:

v' = v + jn/m
q' = q - jn/w

with the impulse magnitude j, and the masses m,w, and normal of interaction n (n being a unit vector)

conservation of momentum is then:

mv + wq = mv + jn + wq - jn
0 = 0

so momentum is conserved already.

the other equation involves the coeffecient of restitution which is:

(v'-q').n = -e(v-q).n

with coeffecient of restitution e for the collision (since your two balls have their own coeffecients of elasticity, i'm not exactly sure how to combine them, but multiplying them may be correct, i'm not sure)

you then have:

(v + jn/m - q + jn/w).n = -e(v-q).n
(v-q).n + j(1/m + 1/w) = -e(v-q).n
j(1/m + 1/w) = -e(v-q).n - (v-q).n
j/(1/m + 1/w) = -(1+e)(v-q).n

j = (-(1+e)(v-q).n) / (1/m + 1/w)

Share this post

Link to post
Share on other sites
Sign in to follow this  

  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!