⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 precess.pro

📁 basic median filter simulation
💻 PRO
字号:
pro precess, ra, dec, equinox1, equinox2, PRINT = print, FK4 = FK4, $        RADIAN=radian;+; NAME:;      PRECESS; PURPOSE:;      Precess coordinates from EQUINOX1 to EQUINOX2.  ; EXPLANATION:;      For interactive display, one can use the procedure ASTRO which calls ;      PRECESS or use the /PRINT keyword.   The default (RA,DEC) system is ;      FK5 based on epoch J2000.0 but FK4 based on B1950.0 is available via ;      the /FK4 keyword.;;      Use BPRECESS and JPRECESS to convert between FK4 and FK5 systems; CALLING SEQUENCE:;      PRECESS, ra, dec, [ equinox1, equinox2, /PRINT, /FK4, /RADIAN ];; INPUT - OUTPUT:;      RA - Input right ascension (scalar or vector) in DEGREES, unless the ;              /RADIAN keyword is set;      DEC - Input declination in DEGREES (scalar or vector), unless the ;              /RADIAN keyword is set;              ;      The input RA and DEC are modified by PRECESS to give the ;      values after precession.;; OPTIONAL INPUTS:;      EQUINOX1 - Original equinox of coordinates, numeric scalar.  If ;               omitted, then PRECESS will query for EQUINOX1 and EQUINOX2.;      EQUINOX2 - Equinox of precessed coordinates.;; OPTIONAL INPUT KEYWORDS:;      /PRINT - If this keyword is set and non-zero, then the precessed;               coordinates are displayed at the terminal.    Cannot be used;               with the /RADIAN keyword;      /FK4   - If this keyword is set and non-zero, the FK4 (B1950.0) system;               will be used otherwise FK5 (J2000.0) will be used instead.;      /RADIAN - If this keyword is set and non-zero, then the input and ;               output RA and DEC vectors are in radians rather than degrees;; RESTRICTIONS:;       Accuracy of precession decreases for declination values near 90 ;       degrees.  PRECESS should not be used more than 2.5 centuries from;       2000 on the FK5 system (1950.0 on the FK4 system).;; EXAMPLES:;       (1) The Pole Star has J2000.0 coordinates (2h, 31m, 46.3s, ;               89d 15' 50.6"); compute its coordinates at J1985.0;;       IDL> precess, ten(2,31,46.3)*15, ten(89,15,50.6), 2000, 1985, /PRINT;;               ====> 2h 16m 22.73s, 89d 11' 47.3";;       (2) Precess the B1950 coordinates of Eps Ind (RA = 21h 59m,33.053s,;       DEC = (-56d, 59', 33.053") to equinox B1975.;;       IDL> ra = ten(21, 59, 33.053)*15;       IDL> dec = ten(-56, 59, 33.053);       IDL> precess, ra, dec ,1950, 1975, /fk4;; PROCEDURE:;       Algorithm from Computational Spherical Astronomy by Taff (1983), ;       p. 24. (FK4). FK5 constants from "Astronomical Almanac Explanatory;       Supplement 1992, page 104 Table 3.211.1.;; PROCEDURE CALLED:;       Function PREMAT - computes precession matrix ;; REVISION HISTORY;       Written, Wayne Landsman, STI Corporation  August 1986;       Correct negative output RA values   February 1989;       Added /PRINT keyword      W. Landsman   November, 1991;       Provided FK5 (J2000.0)  I. Freedman   January 1994;       Precession Matrix computation now in PREMAT   W. Landsman June 1994;       Added /RADIAN keyword                         W. Landsman June 1997;       Converted to IDL V5.0   W. Landsman   September 1997;       Correct negative output RA values when /RADIAN used    March 1999 ;       Work for arrays, not just vectors  W. Landsman    September 2003 ;-      On_error,2                                           ;Return to caller  npar = N_params()  deg_to_rad = !DPI/180.0D0   if ( npar LT 2 ) then begin      print,'Syntax - PRECESS, ra, dec, [ equinox1, equinox2,' + $                 ' /PRINT, /FK4, /RADIAN ]'     print,'         NOTE: RA and DEC must be in DEGREES unless /RADIAN is set'     return   endif else if (npar LT 4) then $      read,'Enter original and new equinox of coordinates: ',equinox1,equinox2   npts = min( [N_elements(ra), N_elements(dec)] )  if npts EQ 0 then $         message,'ERROR - Input RA and DEC must be vectors or scalars'  array  = size(ra,/N_dimen) GE 2  if array then dimen = size(ra,/dimen)  if not keyword_set( RADIAN) then begin          ra_rad = ra*deg_to_rad     ;Convert to double precision if not already          dec_rad = dec*deg_to_rad   endif else begin        ra_rad= double(ra) & dec_rad = double(dec)  endelse  a = cos( dec_rad )   CASE npts of                    ;Is RA a vector or scalar?   1:    x = [a*cos(ra_rad), a*sin(ra_rad), sin(dec_rad)] ;input direction    else: begin                   x = dblarr(npts,3)         x[0,0] = reform(a*cos(ra_rad),npts,/over)         x[0,1] = reform(a*sin(ra_rad),npts,/over)         x[0,2] = reform(sin(dec_rad),npts,/over)         x = transpose(x)         end   ENDCASE     sec_to_rad = deg_to_rad/3600.d0; Use PREMAT function to get precession matrix from Equinox1 to Equinox2  r = premat(equinox1, equinox2, FK4 = fk4)  x2 = r#x      ;rotate to get output direction cosines if npts EQ 1 then begin                 ;Scalar        ra_rad = atan(x2[1],x2[0])        dec_rad = asin(x2[2]) endif else begin                ;Vector             ra_rad = dblarr(npts) + atan(x2[1,*],x2[0,*])        dec_rad = dblarr(npts) + asin(x2[2,*]) endelse  if not keyword_set(RADIAN) then begin        ra = ra_rad/deg_to_rad        ra = ra + (ra LT 0.)*360.D            ;RA between 0 and 360 degrees        dec = dec_rad/deg_to_rad  endif else begin        ra = ra_rad & dec = dec_rad        ra = ra + (ra LT 0.)*2.0d*!DPI  endelse  if array then begin       ra = reform(ra, dimen , /over)       dec = reform(dec, dimen, /over)  endif  if keyword_set( PRINT ) then $      print, 'Equinox (' + strtrim(equinox2,2) + '): ',adstring(ra,dec,1)  return  end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -