/* geosp - scale spherical parameters */ void geosp(s,f,n) double s[][7], f; int n; {int i; for (i=0; i<n; i++) {s[i][0]*=f; s[i][1]*=f; s[i][2]*=f; s[i][3]*=f;}}
Even easier to draw than the traditional grid is a spiral running from pole to pole. It can be created by one continuous pen movement, but still serves to identify the orientation of the sphere by emphasizing the location of the poles. Rotations about the pole are much harder to discern, as they are in most of the presentations.
/* geosr - scale spherical radii */ geosr(s,f,n) double s[][7], f; int n; {int i; for (i=0; i<n; i++) s[i][3]*=f;}
/* geoss - represent a sphere by a spiral running from */ /* pole to pole */ geoss(r0,r,a0) double *r0, r, *a0; { int i, n; double g, th, dh, y0, o[3][3], w[3]; y0=r0[1]; n=2048; g=64.0; th=0.0; dh=3.14159/((double)n); spheu(o,a0); sphrv(w,r,th,g*th); sphap(w,o,w,r0); pltms(w[0],w[2],0); for (i=0; i<n; i++) { th+=dh; sphrv(w,r,th,g*th); sphap(w,o,w,r0); pltms(w[0],w[2],w[1]>=y0?1:0); } }