C+ C NAME: C smei_FitPlane C PURPOSE: C Solves for a least-squares planar fit through the 8 z-values C surrounding [0,0], then reduces all 9 z values relative to C the plane, and returns with the reduced values. C CATEGORY: C gen/for/lib C CALLING SEQUENCE: subroutine smei_FitPlane(z,dz,z0,a,b,sumzz) C INPUTS: C z(-1:1,-1:1) real 3x3 array of fnc values C OUTPUTS: C dz(-1:1,-1:1) real 3x3 array of residuals after subtracting C planar fit C z0 real planar fit value at center pixel C a,b real slopes in x and y direction C (i.e. the planar fit is f=z0+a*i+b*j C with i=-1,0,1, j=-1,0,1) C sumzz real sum of square of residual of 8 pixels C on outside (i.e. omitting center pixel). C MODIFICATION HISTORY: C JUN-2004, Andy Buffington (UCSD/CASS; abuffington@ucsd.edu) C- real z (-1:1,-1:1) real dz(-1:1,-1:1) real z0 real sumzz sumz = z(-1,0)+z(1,0) sumx = 0.0 sumy = 0.0 do i=-1,1 sumz = sumz+z( i,-1)+z(i,1) sumx = sumx+z(-1, i)-z(1,i) sumy = sumy+z( i,-1)-z(i,1) end do a = sumx/6.0 b = sumy/6.0 z0 = sumz/8.0 sumzz = 0.0 do i=-1,1 do j=-1,1 val = z(i,j) val = val-z0+a*float(i)+b*float(j) if (i .ne. 0 .or. j .ne. 0) sumzz = sumzz+val*val ! Skip center pixel (0,0) dz(i,j) = val end do end do sumzz = sumzz/5.0 ! Note altho 8 contribute, 3 params are fit... return end