Physics Collision - Numerical Approach

For analytical approach to collisions see collisions

An approach would be to divide each object into equal sized cubes. Assuming the mass is uniformly dense, and the object is not rotating then, each cube will have the same momentum and energy. So the total energy and momentum is the sum of the energy and momentum of all the cubes. Conversely the energy and momentum of an individual cube is equal to the total energy and momentum divided by the number of cubes.


The most difficult aspect of the analytical approach is, how to calculate the rotational component?

So how can we handle rotations numerically?

Although each cube in an object will have the same angular speed, but the angular momentum and energy of the object about its own centre of mass will be different from its momentum and energy about the objects centre of mass? As we have seen in the analytical approach this gets very complicated.

So, instead, can we just work in terms of the linear momentums and energies in the individual cubes?

So, for an object that is rotating, the linear momentums might look like this:

Each cube now has a different momentum vector, also as the object rotates the position and velocity vectors of each cube will be changing. However, if there are no external forces then, the total linear and angular momentum will be constant.

To get the overall linear momentum, at a particular instant, we can use:

{mom} = sum({vi})

{vi} momentum vector for cube i vector  
{mom} overall linear momentum vector. vector  

To get the overall angular momentum we can use:

{ang_mom} = sum({p}x{vi})

{vi} momentum vector for cube i vector kg m/s
{ang_mom} overall angular momentum vector. bivector kg m2/s
{p} position vector of the cube, relative to the centre of mass. vector m
x cross product    


Since the vectors of each cube are constantly changing, we may need to calculate its position and momentum at any time, we could calculate these by:

  1. Using the conservation laws above.
  2. Integrate acceleration once to get velocity, then again to get position.

Note, numerical integration can gradually build up errors due to floating point errors, these errors can build up and case incorrect behavior as described here.


So how do we calculate the new momentum vectors after a collision? The tricky part is how to work out how the energy will transfer between linear and rotational energy. This may be easier if we work in linear terms for each cube. So when the objects collide there will be a large impulse generated:

If we spread this amongst all the cubes this will give the movement for each cube:

I think the next stage is to express the quantities like momentum and energy, using differential equations, in terms of the position in the object as described in FEM page.

metadata block
see also:


Correspondence about this page

Book Shop - Further reading.

Where I can, I have put links to Amazon for books that are relevant to the subject, click on the appropriate country flag to get more details of the book or to buy it from them.

cover Computational Dynamics

There is also an e-book (Adobe Reader) version available

cover Flexible Multibody Dynamics: A Finite Element Approach

Commercial Software Shop

Where I can, I have put links to Amazon for commercial software, not directly related to the software project, but related to the subject being discussed, click on the appropriate country flag to get more details of the software or to buy it from them.


This site may have errors. Don't use for critical systems.

Copyright (c) 1998-2023 Martin John Baker - All rights reserved - privacy policy.