📄 gal_flat.pro
字号:
FUNCTION GAL_FLAT,IMAGE,ANG,INC,CEN,INTERP = interp;+; NAME:; GAL_FLAT;; PURPOSE:; Transforms the image of a galaxy so that the galaxy appears face-on; EXPLANATION:; Either a nearest-neighbor approximations or a bilinear interpolation ; may be used.;; CALLING SEQUENCE:; RESULT = GAL_FLAT( image, ang, inc, [, cen, /INTERP ] ) ;; INPUTS: ; IMAGE - Image to be transformed; ANG - Angle of major axis, counterclockwise from Y-axis, degrees; For an image in standard orientation (North up, East left); this is the Position Angle; INC - Angle of inclination of galaxy, degrees;; OPTIONAL INPUTS:; CEN - Two element vector giving the X and Y position of galaxy center; If not supplied, then the galaxy center is assumed to coincide; with the image center;; INPUT KEYWORDS:; INTERP - If present, and non-zero, then bilinear interpolation will be; performed. Otherwise a nearest neighbor approximation is used.;; OUTPUTS:; RESULT - the transformed image, same dimensions and type as IMAGE;; METHOD:; A set of 4 equal spaced control points are corrected for inclination; using the procedure POLYWARP. These control points are used by ; POLY_2D to correct the whole image.;; REVISION HISTORY:; Written by R. S. Hill, SASC Technologies Inc., 4 December 1985; Code cleaned up a bit W. Landsman December 1992; Converted to IDL V5.0 W. Landsman September 1997;- if ( N_params() lt 3 ) then begin print,'Syntax - result = gal_flat( image, ang, inc, [ cen, /INTERP ])' print,'ANG - Position Angle of major axis (degrees)' print,'INC - Inclination of galaxy (degrees)' return, -1 endif if not keyword_set( INTERP ) then interp = 0 angr = (ang+90)/!RADEG tanang = tan(angr) cosang = cos(angr) cosinc = cos(inc/!RADEG); Parameters of image dims = SIZE(image) if N_elements(cen) NE 2 then begin xcen = dims[1]/2.0 ;Center ycen = dims[2]/2.0 if not !QUIET then message,'Galaxy nucleus assumed in image center',/CONT endif else begin xcen = cen[0] ycen = cen[1] endelse; Equation of rotation axis b = ycen - xcen*tanang; Fiducial grid (as in ROT_INT) gridx = xcen + [ [-1,1], [-1,1] ] * dims[1]/6.0 gridy = ycen + [ [-1,-1], [1,1] ] * dims[2]/6.0 ; Distorted version of grid yprime = gridx*tanang + b ;Equation of major axis r0 = (gridy-yprime)*cos(angr) ;Dist of control pts to major axis delr = r0*(1.0-cosinc) ;Correct distance for inclination dely = -delr*cos(angr) delx = delr*sin(angr) distx = gridx + delx disty = gridy + dely; Parameters of undistorted grid x0 = dims[1]/3.0 y0 = dims[2]/3.0 dx = x0 ;In this case only dy = y0; Do it polywarp, distx, disty, gridx, gridy, 1, kx, ky RETURN,poly_2d( image, kx, ky, interp, MISSING = 0) end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -