It seems that there are a number of options in building a
physics simulator, None of these options can cope with all types
of physics, I think the ideal system would be able to mix these
approaches and dynamically switch between them depending on the
accuracy required and computing resources available.

However,
to be practical, To build a practical simulator we would need to choose between options such as:

### Space

Options
are:

a) finite steps, e.g.- model each atom, or one
point represents say a million or a billion atoms.

b)
solid bodies - each solid body has 6 degrees of freedom, only
boundary has to be modeled for collision detection

c)
make solid bodies as a set of simpler shapes, say cubes, or
represent shapes and mass distribution by
equations.

### Time

Options
are:

d) finite steps, represent time varying quantities
at step n, in terms of step n-1, n-2, etc.

e)
continuous, represent time varying by
equations.

### Forces

Options
are:

f) represent all interactions between objects as
forces and groups of forces as force + torque.

g) treat
static contact, free movement, constraints (joints and sliding)
and collisions separately each with there own algorithms.

## Snooker Game