1
$\begingroup$

For a physics engine I need to calculate the force that results from rotating objects colliding with each other.

I need to get the force that applies to a defined point ($x,y,z$ - coordinates) with a defined mass, if a rotating object with a defined mass, a defined momentum of inertia, a defined axis of torque and rotational speed collides with that point due to its rotation. I thought I could calculate this force similar to calculating the force that applies if to points collide with each other:

$F = dp / dt$;

$dp = (v_1 - v_2) \cdot mass$;

Analog for rotation:

$L$: angular of momentum, $M$: torque, $J$: moment of inertia, $\omega$: rotational speed

$M = dL / dt$;

$dL = (\omega_1 - \omega_2) \cdot J$;

However, i do not know if I can do it like this without breaking laws of physics and if it is possible I am not sure how to calculate $\omega_2$ (preservation of the angular momentum?).

All of these things need to be done in a 3d coordinate system.

If I misused some physical terms don't blame me, blame google translator.

$\endgroup$
  • $\begingroup$ Possibly easier to just calculate the linear motion of the extended object, then use the coefficient of friction and an assumed interaction time to calculate the resultant of both normal and frictional forces. $\endgroup$ – BowlOfRed Aug 7 '17 at 0:05
  • $\begingroup$ Is there friction involved here, or just the contact force along the contact normal? $\endgroup$ – ja72 Aug 7 '17 at 0:36
  • $\begingroup$ See this answer for a strong hint. $\endgroup$ – ja72 Aug 7 '17 at 0:37
  • $\begingroup$ See also notes by David Baraff on how to handle 3D collisions $\endgroup$ – ja72 Aug 9 '17 at 21:48
0
$\begingroup$

Point Masses

For two point masses colliding the impulse $J$ (instant momentum exchange) is defined by the scalar equation $$ J = (1+\epsilon)\, \mu\, v_{imp} $$

Where:

  • $\epsilon$ is the coefficient of restitution.
  • $v_{imp} = {\bf n}^\top ( {\bf v}_1-{\bf v}_2)$ the impact speed (relative speed along contact normal direction ${\bf n}$).
  • $\mu^{-1} = \frac{1}{m_1} + \frac{1}{m_2}$ or $\mu = \frac{m_1 m_2}{m_1+m_2}$ the reduced mass of the system. I prefer the term, the effective mass of the impact.

This impulse has an equal and opposite action on the two bodies. The changes in motion described by

$$ \begin{align} \Delta {\bf v}_1 & = -\frac{J }{m_1} \,{\bf n} \\\Delta {\bf v}_2 & = +\frac{J}{m_2} \,{\bf n} \end{align} $$

Rigid Bodies

Now suppose that bodies [1] & [2] are an extended rigid body, instead of a point masses. They are defined at the moment of impact by the vectors ${\bf c}_1$ and ${\bf c}_2$ for the location of the center of mass relative to the impact point, and ${\rm I}_1$, ${\rm I}_2$ the 3×3 mass moment of inertia matrices at the center of mass (and along the world coordinates).

The scalar equation for the impulse is the same as the point mass except for the effective mass $\mu$ accounting for the inertial properties as well. This assumes a frictionless contact.

$$ J = (1+\epsilon) \mu \; v_{imp} $$

Where:

  • $$\boxed{v_{imp} = {\bf n}^{\top}\left({\bf v}_{1}+{\bf c}_{1}\times{\boldsymbol{\omega}}_{1}-{\bf v}_{2}-{\bf c}_{2}\times{\boldsymbol{\omega}}_{2}\right)}$$ is the relative speed along the contact normal ${\bf n}$.
  • $$\boxed{\mu^{-1} = \frac{1}{m_{1}}+\frac{1}{m_{2}}-{\bf n}^{\top}\left({\bf c}_{1}\times{\rm I}_{1}^{-1}{\bf c}_{1}\times{\bf n}+{\bf c}_{2}\times{\rm I}_{2}^{-1}{\bf c}_{2}\times{\bf n}\right)}$$ is the effective mass of the impact.

So the effect of a rigid body is the additional term $-{\bf n}^{\top}\left({\bf c}_{i}\times{\rm I}_{i}^{-1}\left({\bf c}_{i}\times{\bf n}\right)\right)$ to the inverse effective mass. This terms ends up being positive when the components are expanded. So the rigid body increased the inverse mass, ==> reduces the effective mass at the impact point.

This impulse $J$ changes the motion of the two bodies according to the equations of motion

$$ \begin{aligned} \Delta {\bf v}_1 &= -\frac{J}{m_1} {\bf n} & \Delta {\boldsymbol \omega}_1 &= {\rm I}_1^{-1} {\bf c}_1 \times J {\bf n} \\ \Delta {\bf v}_2 &= \frac{J}{m_2} {\bf n} & \Delta {\boldsymbol \omega}_2 &= -{\rm I}_2^{-1} {\bf c}_2 \times J {\bf n} \end{aligned} $$

Example

A vertical rod (body [1]) of length $\ell$ is impacted by a point mass (body [2]) moving along the $-x$ direction at the end point.

Since we have a point mass ${\bf c}_2=0$. For the rod the mass moment of inertia about the $z$ axis is ${\rm I}_1 = \left[ \matrix{ \ddots & & \\ & \ddots & \\ & & \frac{m_1}{12} \ell^2} \right] $ and the location of the center of mass relative to the contact point is ${\bf c}_1 = \pmatrix{0 \\ -\frac{\ell}{2} \\ 0}$. Finally, the contact normal is ${\bf n} = \pmatrix{1 \\ 0 \\ 0}$.

The effective mass at the impact point is

$$ \mu^{-1}= \frac{1}{m_1} + \frac{1}{m_2} - \pmatrix{1 \\ 0 \\ 0}^\top \pmatrix{0\\ -\frac{\ell}{2} \\ 0} \times \pmatrix{0 \\ 0 \\ \frac{6}{m_1 \ell}} = \frac{1}{m_1} + \frac{1}{m_2} + \frac{3}{m_1}$$

$$\mu = \frac{m_1 m_2}{m_1 +4 m_2} $$

Appendix

If ${\bf v}_1$ is the velocity of the center of mass for body [1] (${\bf v}_2$ of body [2]), then the velocity vectors at the impact point A are defined by

$$ \begin{aligned} {\bf v}_1^A & = {\bf v}_1 + {\bf c}_1 \times {\boldsymbol \omega}_1 \\ {\bf v}_2^A & = {\bf v}_2 + {\bf c}_2 \times {\boldsymbol \omega}_2 \end{aligned} $$

The impact speed is thus defined as $$v_{imp} = {\bf n}^\top ({\bf v}_1 + {\bf c}_1 \times {\boldsymbol \omega}_1 - {\bf v}_2 - {\bf c}_2 \times {\boldsymbol \omega}_2)$$

The effect of the impulse $J$ along ${\bf n}$ at the point of impact is felt as

$$ \begin{aligned} \Delta {\bf v}_1 &= -\frac{J}{m_1} {\bf n} & \Delta {\boldsymbol \omega}_1 &= -{\rm I}_1^{-1} (-{\bf c}_1) \times J {\bf n} \\ \Delta {\bf v}_2 &= +\frac{J}{m_2} {\bf n} & \Delta {\boldsymbol \omega}_2 &= +{\rm I}_2^{-1} (-{\bf c}_2) \times J {\bf n} \end{aligned} $$

In turn these changes in the motion of the body change the motion at the impact point **A* as

$$ \begin{align} \Delta {\bf v}_1^A & = \Delta {\bf v}_1 + {\bf c}_1 \times \Delta {\boldsymbol \omega}_1 \\ \Delta {\bf v}_2^A & = \Delta {\bf v}_2 + {\bf c}_2 \times \Delta {\boldsymbol \omega}_2 \end{align} $$

The law of impact states that along the contact normal the rebound velocity is a fraction of the impact velocity

$$ {\bf n}^\top ( {\bf v}_1^A + \Delta {\bf v}_1^A - {\bf v}_2^A -\Delta {\bf v}_2^A) = -\epsilon \; {\bf n}^\top ( {\bf v}_1^A - {\bf v}_2^A ) $$

By moving the known (pre-impact) motions on the right hand side we get

$${\bf n}^\top ( \Delta {\bf v}_1^A - \Delta {\bf v}_2^A) = -(1+\epsilon) \; v_{imp} $$

Add the effect of the impulse $J$ to the above to get

$${\bf n}^\top ( \Delta {\bf v}_1 + {\bf c}_1 \times \Delta {\boldsymbol \omega}_1 - \Delta {\bf v}_2 - {\bf c}_2 \times \Delta {\boldsymbol \omega}_2) = -(1+\epsilon) \; v_{imp} $$

$${\bf n}^\top ( -\frac{J}{m_1} {\bf n} - {\bf c}_1 \times {\rm I}_1^{-1} (-{\bf c}_1) \times J {\bf n} - \frac{J}{m_2} {\bf n} - {\bf c}_2 \times {\rm I}_2^{-1} (-{\bf c}_2) \times J {\bf n}) = -(1+\epsilon) \; v_{imp} $$

$${\bf n}^\top ( -\frac{1}{m_1} {\bf n} + {\bf c}_1 \times {\rm I}_1^{-1} {\bf c}_1 \times {\bf n} - \frac{1}{m_2} {\bf n} + {\bf c}_2 \times {\rm I}_2^{-1} {\bf c}_2 \times {\bf n}) J = -(1+\epsilon) \; v_{imp} $$

$$ \left(\frac{1}{m_{1}}+\frac{1}{m_{2}}-{\bf n}^{\top}\left({\bf c}_{1}\times{\rm I}_{1}^{-1}{\bf c}_{1}\times{\bf n}+{\bf c}_{2}\times{\rm I}_{2}^{-1}{\bf c}_{2}\times{\bf n}\right)\right)\,J=(1+\epsilon)\,v_{imp} $$

which is solved for $J$

Related answers:

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.