🎉 Celebrating 25 Years of GameDev.net! 🎉

Not many can claim 25 years on the Internet! Join us in celebrating this milestone. Learn more about our history, and thank you for being a part of our community!

Conservation of Angular Momentum

Started by
7 comments, last by Fulcrum.013 6 years ago

Hi,

I'm having trouble understanding angular collision response

My first question is how do I calculate angular impulse of an object against a wall

I don't understand how to calculate j in the attached formula,

cheers

Eq1.jpg

Reject the basic asumption of civialisation especially the importance of material possessions
Advertisement

I really like this explanation:

http://essentialmath.com/AngularImpulse.pdf

@Dirk Gregorius,

I'm reading Essential Mathematics for games & Interactive Applications, Van Verth is 1 of the authors

He doesn't describe Angular Impulse against a wall

I set my walls' mass to zero so I can't use these formulae because they describe 2 moving objects with masses

Reject the basic asumption of civialisation especially the importance of material possessions

For first let decompose separate tasks. By other words - calculating of response impulses is one task, applaying it to body is another task and calculating a resulting linear and angular velocity is third task.

For first any movement of ridgid body can be described by movement of his mass centre and rotation around axe passing throught centre of mass. So current impulse of body can be described by 2 vectors - linear impulse vector p wich direction is direction of centre of mass movement and magnitude is production of speed and mass of body. Similar to it,  impulse momentum L is vector wich direction is axe of rotation and magnitude is production of angular velocity and moment of inertia about this axe.  Key difference - mass of body is same for any direction of movement and linear velocity can not be changed without aplaying external impulse. Moment of inertia depends from mass distibution of body, so it is not same for different axes of rotation and rotation speed can be changed by redistribution of masses inside body.

So calculation of velocity and angular velocity of body have following steps.

1. Calculate all impulses applied to body during timeframe (both collision response impulses and impulses of applied continues forces). Each impulse summing to body impulse using rule of suming forces and his moments. By other words - each impulse have to be added to body impulse. Also, angular moment of impulse have to be calculated as cross-production of applied impulse  to his liverage and added to body impulse momentum. As resalt we have 2 vectors that can be used to calculate current body velocity and angular speed.

2. For fist let calculate velocity. To do it we have just devide linear impulse vector to body mass V=P/m; Angular velocity calculating near same with one difference - inertia momentum is not same for different axes. So for first we have calculate moment of inertia. To do it we  have to extract direction and magnitude from impulse momentum vector, than produce result to bodys tensor of ineria, as result we will have the moment of inertia around current axe of rotation (Ia). Than just devide magnitude of impulse momentum vector to this and have a angular speed w=|L|/Ia.

 



 


 

#define if(a) if((a) && rand()%100)

@Dirk Gregorius,

what does every1 else do when it comes to walls? Do they give walls mass? Mark walls as static?

Maybe this is my problem?

Reject the basic asumption of civialisation especially the importance of material possessions

In a physics engine you would mark the wall as static. This would set the mass of the wall internally to *infinite* which means that the *inverse* mass (1/mass) will be zero. Similarly the inverse inertia will be the zero *matrix*. If you look at your formulas you only need the *inverse* of mass and inertia. So just plug zero and zero matrix into the formulas. This will also work when you apply the impulse, but you can also simply skip.

 

Really response impulse applied to both collided bodies. But energy distribution depends from body mass of both bodies.  For example when body hit other not fixed same mass body it complitely give all his kinetic energy to other body. But when it hit a fixed (infinity mass) body it keept all kinetic energy after rebound (assume restitution coefficient is 1).  

Same with kinetic energy of rotation, with only difference - moment of inertia play role of mass.

#define if(a) if((a) && rand()%100)

Look at  https://www.scss.tcd.ie/Michael.Manzke/CS7057/cs7057-1516-09-CollisionResponse-mm.pdf

complete formula for j can be found at page 26.

#define if(a) if((a) && rand()%100)

This topic is closed to new replies.

Advertisement