On further thought, I have a slightly different suggestion for
spherical restraint.
SphericalRestraint(Model*, ParticleIndex, FloatKeys keys, Floats
center, ScoreFunc*);
The advantage of this is that you can use whatever coordinates you
want for the restraint and however many you want. So you can also use
it to restraint a single coordinate or a pair of coordinates.
The downside, of course, is then you can't make the x/y/z static. But it
sounds reasonable to me.
I would suggest the constructor for DistanceRestraint be made to be
similar.
I'd like to keep the existing constructor, since distance restraints are
probably almost always going to be on x/y/z. But by all means add a
new constructor too.