Move central angle & rotation matrix calculations into a separate function

In this way, ReadRunDatabase can be overridden without having to duplicate
the geometry calculations.