I think we should have a new class of object, which I am, for the time
being calling a ParticleRefiner to handle hierarchical collision
detection and generation of particles on the fly. I am currently using
it to generate particles to cover the edges of my unstructured chains in
order to better preserve excluded volume. The interface looks more or
less like:
ParticleRefiner {
// return a bunch of particles which refines p
Particles refine(Particle p)
// clean up the particles which refined p if needed
cleanup(Particle p, Particles);
};
And the methods must be called as a pair with the result of the first
method passed as the second argument to the second method.