# Rigid body collision problem

## Homework Statement

Im programming physics simulation. ...rigid body collision with ball.
The ball is OK, but I have to push and rotate the rigid body.
I have the contact point and the velocity(v) that I would add to the bodys current velocity if I wouldnt have to rotate it.
So I need to divide that v into push(v_push) and rotate(angular_velocity) parts.

## The Attempt at a Solution

I see v as a momentum that stores some energy(E_total)
Energy_in_v_push= Energy_in_v - Energy_in_generated_angular_velocity

So my current solution is:

M= |v| * r (torque)
I= 1/12 * m * (a^2 + c^2) (moment of inertia. the body is an a*c rectangle. m is the weight)
(... M and I are OK)
omega= M / I

E_total= 1/2 * m * |v|^2
E_spin= 1/2 * I * omega^2
E_push= E_total - E_spin

|v_push|= sqrt( 2 * E_push / m)
generated_angular_velocity= omega * FROM_RADIANS (I have to convert it to degrees)

Well, this works perfectly except I have to multiply generated_angular_velocity with m, otherways it turns much too slowly.
Whats the problem then? I guess that omega= M/I is angular acceleration not velocity or something. Is this whole approach wrong?
Thanks!

tiny-tim
Homework Helper
Welcome to PF!

Hi Alii! Welcome to PF!

(try using the X2 and X2 buttons just above the Reply box )

I'm finding your notation very confusing.

You seem to be using "v" both for elocity and for force ("vpush").

And you have a strange Epush
M= |v| * r (torque)

omega= M / I

E_total= 1/2 * m * |v|^2
E_spin= 1/2 * I * omega^2
E_push= E_total - E_spin

|v_push|= sqrt( 2 * E_push / m)

Etotal = 1/2 mvc.o.m2 + 1/2 Ic.o.mω2.

And for torque, use τ (or T) … τ = Iα.

(α is angular acceleration; angular momentum is L = Iω)

Thanks!
Ive tryed to calculate with forces and accelerations but I figured out that the eqvuations about torque and angular acceleration would only be corrent if the body was be rotating around a fixed axis:S Which is not the case. I dont know how can it work when I multiply the angular_velocity by the weight.
(generated_angular_velocity= omega * FROM_RADIANS * m)

tiny-tim
Homework Helper
… I figured out that the eqvuations about torque and angular acceleration would only be corrent if the body was be rotating around a fixed axis:S Which is not the case.

τ = Iα still works provided that everything is measured relative to an axis through the centre of mass

however, your rigid body presumably has different moments of inertia along different directions, so you will have to deal with precession, and so you probably need Euler's equations

τ = Iα still works provided that everything is measured relative to an axis through the centre of mass

however, your rigid body presumably has different moments of inertia along different directions, so you will have to deal with precession, and so you probably need Euler's equations

Thanks!

"Euler's equations" ....no. I forgot to say that its 2D not 3D so theres just one axis.

"You seem to be using "v" both for velocity and for force ("vpush")."

That was right:) τ = weight * v * r, not v*r because the force that generates that velocity is F = m*a (which is m*v if I dont consider time)

So omega is correct now. However E_push= E_total - E_spin doesnt work, cause I get greater E_spin than E_total.(body accelerated with F force stores less energy than the same body rotated with the same F force. ...can that be true??) Maybe this approach was totally wrong anyway.

My solution now is:
E_push = E_spin_max - E_spin
Then I get v_push from E_push.

I calculate E_spin_max with maximum possible r ....lever arm length.

The body is a rectangle, I tryed now with different sizes and weights and it looks realistic. I dont know if it really is:)

tiny-tim
Homework Helper
Hi Alli!
… E_push= E_total - E_spin doesnt work, cause I get greater E_spin than E_total.

i don't understand

are you using Etotal = 1/2 mvc.o.m2 + 1/2 Ic.o.mω2 ?

(body accelerated with F force stores less energy than the same body rotated with the same F force. ...can that be true??)

i don't understand what you're asking

rotating with a force F depends on the distance of F's line of application from the centre of mass

Hi Alli!

i don't understand

are you using Etotal = 1/2 mvc.o.m2 + 1/2 Ic.o.mω2 ?

i don't understand what you're asking

rotating with a force F depends on the distance of F's line of application from the centre of mass

Sorry, I guess its my bad english.
I approached it like this:
There is a rigid body. You can push it but you cant rotate it. It gets hit by an other object and that adds v to its current velocity. That v stores some energy. I call that E_total(=1/2*m*v^2).

Now I want to enable rotation. I want to divide the energy from the collision(E_total) to E_push and E_spin. So instead of puhing the body with E_total energy, I want to push it with E_push and rotate it with E_spin.

Check out this pic:

This didnt work cause I got numbers like E_total= 7, E_spin= 15
Then E_push was -8 ....which is not good. I dont know whats wrong.

tiny-tim
Homework Helper
I'm sorry, but you can't use energy like that.

You don't apply an energy E, you apply a force F.

Since you don't apply an energy E, you can't split the energy up.

You have to find the momentum and the angular momentum directly from the force F.

I'm sorry, but you can't use energy like that.

You don't apply an energy E, you apply a force F.

Since you don't apply an energy E, you can't split the energy up.

You have to find the momentum and the angular momentum directly from the force F.

Thanks! This is not as simple as I thought:)
Ive found a site that describes this kind of collision quite well. (http://www.myphysicslab.com/collision.html)

I will give it another try to split the force somehow.