function yy_coors_transform, sth, cth, sph, cph
;
;  Rotate by Pi about z axis, then by Pi/2 about x axis.
;  No distinction between Yin and Yang as transformation matrix is self-inverse.
;
      xprime = -cph*sth
      yprime = -cth
      zprime = -sph*sth

      sprime = sqrt(xprime^2 + yprime^2)

      yz=fltarr(2)*sth
      yz(0) = atan(sprime,zprime)
      yz(1) = atan(yprime,xprime)
      if yz(1) lt 0. then yz(1) += 2.*!pi

      return, yz

    end
;*******************************************************************************
    pro yin2yang_coors_tri,i1,i2,j1,j2,y,z,yz
 
      yz=fltarr(2,(abs(i2-i1)+1)*(abs(j2-j1)+2)/2)*y[0]

      istep = sign(i2-i1) & jstep = sign(j2-j1)

      ind=0
      for i=i1,i2,istep do begin
        for j=j1,j2,jstep do begin
          if ( jstep*(j-j2)+istep*(i-i1) le 0 ) then begin
            yz(*,ind)=yy_coors_transform(sin(y(i)),cos(y(i)),sin(z(j)),cos(z(j)))
            ind++
          endif
        endfor
      endfor

    end
;*******************************************************************************
  pro yin2yang_coors, y, z, yz

      yz=fltarr(2,n_elements(y)*n_elements(z))*y[0]    ; 'y[0] to enforce correct numerical precision

      ind=0L
      for i=0,n_elements(y)-1 do begin

        sth=sin(y(i)) & cth=cos(y(i))

        for j=0,n_elements(z)-1 do begin

          yz(*,ind)=yy_coors_transform(sth,cth,sin(z(j)),cos(z(j)))
          ind++
        
        endfor
      endfor

    end