GenProjection() optimization

Reduced calls to sinusodial and division functions from O(n^2) to O(n).
Collapsed generating an ellipsoid and spheres into a single function.
Minimized number of variables per function where possible. Added shape
option to GenProjection, but setting to anything but the default is
unadvised.