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?