Abstracting screen coordinates to generalized coordinates.

I can see this arc ball being useful for more than screen space
rotations. The transformation from screen space to world space is
straightforward, but things are a bit more tricky going from world space
to screen space *if* you want to preserve some notion of depth (which
shouldn't exist in screen space...).