;+ ; NAME: ; WCS_ROTATE ; ; PURPOSE: ; Rotate between standard (e.g. celestial) and native coordinates ; EXPLANATION: ; Computes a spherical coordinate rotation between native coordinates ; and standard celestial coordinate system (celestial, Galactic, or ; ecliptic). Applies the equations in Appendix A of the paper ; "Representation of Celestial Coordinates in FITS" by Mark Calabretta ; Eric Greisen (2002, A&A, submitted). ; See http://www.aoc.nrao.edu/~egreisen ; ; CATEGORY: ; Mapping and Auxiliary FITS Routine ; ; CALLING SEQUENCE: ; WCS_ROTATE, longitude, latitude, phi, theta, crval, ; [LONGPOLE = , /REVERSE, /ORIGIN ] ; ; INPUT PARAMETERS: ; crval - 2 element vector containing standard system coordinates (the ; longitude and latitude) of the reference point ; ; INPUT OR OUTPUT PARAMETERS ; longitude - longitude of data, scalar or vector, in degrees, in the ; standard celestial coordinate system ; latitude - latitude of data, same number of elements as longitude, ; in degrees ; phi - longitude of data in the native system, in degrees, scalar or ; vector ; theta - latitude of data in the native system, in degrees, scalar or ; vector ; ; If the keyword(REVERSE) is set then phi and theta are input parameters ; and longitude and latitude are computed. Otherwise, longitude and ; latitude are input parameters and phi and theta are computed. ; ; OPTIONAL KEYWORD INPUT PARAMETERS: ; ; ORIGIN - If this keyword is set and non-zero, then the reference point ; given by CRVAL in the native system is assumed to be at the ; origin of the coordinates, rather than at the North Pole. ; ORIGIN should be set for cylindrical projections (Cylindrical ; perspective-CYP, Cartesian - CAR, Mercator - MER, Cylindrical ; Equal area - CEA) and conventional projections (Bonne's equal ; area - BON, Polyconic - PCO, Sinusoidal - GLS, Parabolic - PAR, ; Aitoff - AIT, Mollweide - MOL, COBE quadrilateralized sphere - ; CSC, Quadrilateralized Spherical Cube - QSC, and Tangential ; Spherical Cube - TSC) ; ; LONGPOLE - native longitude of standard system's North Pole, default ; is 180 degrees ; ; /REVERSE - if set then phi and theta are input parameters and longitude ; and latitude are computed. By default, longitude and ; latitude are input parameters and phi and theta are computed. ; REVISION HISTORY: ; Written W. Landsman December, 1994 ; Fixed error in finding North Pole if /ORIGIN and LONGPOLE NE 180 ; Xiaoyi Wu and W. Landsman, March, 1996 ; Fixed implementation of March 96 error, J. Thieler, April 1996 ; Updated to IDL V5.0 W. Landsman December 1997 ; Fixed determination of alpha_p if /ORIGIN and LONGPOLE EQ 180 ; W. Landsman May 1998 ; Ensure argument of ASIN() is -1 (-1) < 1 ;Account for possible roundoff ; use b0,b1,b2 to compute "native" latitude and longitude if keyword_set(REVERSE) then begin latitude = asin(b2)*radeg longitude = atan( b1, b0)*radeg endif else begin theta = asin(b2)*radeg phi = atan( b1, b0)*radeg endelse return end