📄 euler.pro
字号:
PRO EULER,AI,BI,AO,BO,SELECT, FK4 = FK4, SELECT = select1, RADIAN=radian;+; NAME:; EULER; PURPOSE:; Transform between Galactic, celestial, and ecliptic coordinates.; EXPLANATION:; Use the procedure ASTRO to use this routine interactively;; CALLING SEQUENCE:; EULER, AI, BI, AO, BO, [ SELECT, /FK4, /RADIAN, SELECT = ] ;; INPUTS:; AI - Input Longitude, scalar or vector. In DEGREES unless /RADIAN; is set. If only two parameters are supplied, then AI and BI ; will be modified to contain the output longitude and latitude.; BI - Input Latitude in DEGREES;; OPTIONAL INPUT:; SELECT - Integer (1-6) specifying type of coordinate transformation. ;; SELECT From To | SELECT From To; 1 RA-Dec (2000) Galactic | 4 Ecliptic RA-Dec ; 2 Galactic RA-DEC | 5 Ecliptic Galactic ; 3 RA-Dec Ecliptic | 6 Galactic Ecliptic ;; If not supplied as a parameter or keyword, then EULER will prompt for ; the value of SELECT; Celestial coordinates (RA, Dec) should be given in equinox J2000 ; unless the /FK4 keyword is set.; OUTPUTS:; AO - Output Longitude in DEGREES, always double precision; BO - Output Latitude in DEGREES, always double precision;; OPTIONAL INPUT KEYWORD:; /FK4 - If this keyword is set and non-zero, then input and output ; celestial and ecliptic coordinates should be given in equinox ; B1950.; /RADIAN - if set, then all input and output angles are in radians rather; than degrees.; SELECT - The coordinate conversion integer (1-6) may alternatively be ; specified as a keyword; EXAMPLE:; Find the Galactic coordinates of Cyg X-1 (ra=299.590315, dec=35.201604); IDL> ra = 299.590315d; IDL> dec = 35.201604d; IDL> euler,ra,dec,glong,glat,1 & print,glong,glat ; 71.334990, 3.0668335; REVISION HISTORY:; Written W. Landsman, February 1987; Adapted from Fortran by Daryl Yentis NRL; Made J2000 the default, added /FK4 keyword W. Landsman December 1998; Add option to specify SELECT as a keyword W. Landsman March 2003; Use less virtual memory for large input arrays W. Landsman June 2008; Added /RADIAN input keyword W. Landsman Sep 2008;- On_error,2 compile_opt idl2 npar = N_params() if npar LT 2 then begin print,'Syntax - EULER, AI, BI, A0, B0, [ SELECT, /FK4, /RADIAN, SELECT= ]' print,' AI,BI - Input longitude,latitude in degrees' print,' AO,BO - Output longitude, latitude in degrees' print,' SELECT - Scalar (1-6) specifying transformation type' return endif twopi = 2.0d*!DPI fourpi = 4.0d*!DPI rad_to_deg = 180.0d/!DPI; J2000 coordinate conversions are based on the following constants; (see the Hipparcos explanatory supplement).; eps = 23.4392911111d Obliquity of the ecliptic; alphaG = 192.85948d Right Ascension of Galactic North Pole; deltaG = 27.12825d Declination of Galactic North Pole; lomega = 32.93192d Galactic longitude of celestial equator ; alphaE = 180.02322d Ecliptic longitude of Galactic North Pole; deltaE = 29.811438523d Ecliptic latitude of Galactic North Pole; Eomega = 6.3839743d Galactic longitude of ecliptic equator if keyword_set(FK4) then begin equinox = '(B1950)' psi = [ 0.57595865315D, 4.9261918136D, $ 0.00000000000D, 0.0000000000D, $ 0.11129056012D, 4.7005372834D] stheta =[ 0.88781538514D,-0.88781538514D, $ 0.39788119938D,-0.39788119938D, $ 0.86766174755D,-0.86766174755D] ctheta =[ 0.46019978478D, 0.46019978478D, $ 0.91743694670D, 0.91743694670D, $ 0.49715499774D, 0.49715499774D] phi = [ 4.9261918136D, 0.57595865315D, $ 0.0000000000D, 0.00000000000D, $ 4.7005372834d, 0.11129056012d] endif else begin equinox = '(J2000)' psi = [ 0.57477043300D, 4.9368292465D, $ 0.00000000000D, 0.0000000000D, $ 0.11142137093D, 4.71279419371D] stheta =[ 0.88998808748D,-0.88998808748D, $ 0.39777715593D,-0.39777715593D, $ 0.86766622025D,-0.86766622025D] ctheta =[ 0.45598377618D, 0.45598377618D, $ 0.91748206207D, 0.91748206207D, $ 0.49714719172D, 0.49714719172D] phi = [ 4.9368292465D, 0.57477043300D, $ 0.0000000000D, 0.00000000000D, $ 4.71279419371d, 0.11142137093d] endelse; if N_elements(select) EQ 0 then $ if N_elements(select1) EQ 1 then select=select1 if N_elements(select) EQ 0 then begin print,' ' print,' 1 RA-DEC ' + equinox + ' to Galactic' print,' 2 Galactic to RA-DEC' + equinox print,' 3 RA-DEC ' + equinox + ' to Ecliptic' print,' 4 Ecliptic to RA-DEC' + equinox print,' 5 Ecliptic to Galactic' print,' 6 Galactic to Ecliptic'; select = 0 read,'Enter selection: ',select endif I = select - 1 ; IDL offset if npar EQ 2 then begin if keyword_set(radian) then begin ao = temporary(ai) - phi[i] bo = temporary(bi) endif else begin ao = temporary(ai)/rad_to_deg - phi[i] bo = temporary(bi)/rad_to_deg endelse endif else begin if keyword_set(radian) then begin ao = ai - phi[i] bo = bi endif else begin ao = ai/rad_to_deg - phi[i] bo = bi/rad_to_deg endelse endelse sb = sin(bo) & cb = cos(bo) cbsa = cb * sin(ao) bo = -stheta[i] * cbsa + ctheta[i] * sb bo = asin(bo<1.0d) if not keyword_set(radian) then bo = bo*rad_to_deg; ao = atan( ctheta[i] * cbsa + stheta[i] * sb, cb * cos(ao) ) ao = ( (ao+psi[i]+fourpi) mod twopi) if not keyword_set(radian) then ao = ao*rad_to_deg if ( npar EQ 2 ) then begin ai = temporary(ao) & bi=temporary(bo) endif return end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -