function sip_eval, xy ;+ ; NAME: ; SIP_EVAL ; PURPOSE: ; Compute distorted coordinates given SIP (simple imaging polynomial) ; coefficients. ; EXPLANATION: ; See http://fits.gsfc.nasa.gov/registry/sip.html for the SIP convention ; ; The coefficients are passed via common block. This is because this ; routine is called by the intrinisc BROYDEN() function in AD2XY, and ; common blocks are the only way to pass parameters to the user supplied ; function in BROYDEN(). ; CALLING SEQUENCE: ; res = SIP_EVAL(xy) ; INPUTS: ; xy - 2 elements vector giving the undistorted X,Y position ; OUTPUTS: ; res - 2 element vector giving the distorted position ; COMMON BLOCKS: ; common broyden_coeff,xcoeff,ycoeff ; ; XCOEFF, YCOEFF are both nxn arrays giving the SIP coefficient for an ; n x n polynomial. ; REVISION HISTORY: ; Written W. Landsman Dec 2013 ;- compile_opt idl2,hidden common broyden_coeff,xcoeff,ycoeff dim = size(xcoeff,/dimen) n = dim[0] xp = xy[0] yp = xy[1] for i= 0,n-1 do begin for j=0,n-1 DO begin if xcoeff[i,j] NE 0.0 then xp += xcoeff[i,j]*xy[0]^i*xy[1]^j if ycoeff[i,j] NE 0.0 then yp += ycoeff[i,j]*xy[0]^i*xy[1]^j endfor endfor return, [xp,yp] end