Actually, I don't think we can do the spring force computation by components. Consider the case of a ball colliding with another ball along the x-axis. Then, along the y-component, it looks like the two balls are experiencing a strain equal to r1 + r2. And so the algorithm will have one ball shoot upwards and the other ball shoot downwards, even though there is no y-component in the collision. So, when computing the spring force, we must take all components into account simultaneously. These methods added to Ball will probably be useful for that computation.