Viewing contents of file '../idllib/jhuapls1r/usr/ctrim.pro'
;-------------------------------------------------------------
;+
; NAME:
; CTRIM
; PURPOSE:
; Do a circular trim on an array.
; CATEGORY:
; CALLING SEQUENCE:
; b = ctrim(a)
; INPUTS:
; a = input array. in
; KEYWORD PARAMETERS:
; OUTPUTS:
; b = output trimmed array. out
; COMMON BLOCKS:
; NOTES:
; Note: if input array is not square then
; trimmed array is elliptical.
; MODIFICATION HISTORY:
; R. Sterner. 24 May, 1987.
; Johns Hopkins University Applied Physics Laboratory.
; R. Sterner, 25 Jan 1990 --- converted to SUN.
;
; Copyright (C) 1987, Johns Hopkins University/Applied Physics Laboratory
; This software may be used, copied, or redistributed as long as it is not
; sold and this copyright notice is reproduced on each copy made. This
; routine is provided as is without any express or implied warranties
; whatsoever. Other limitations apply as described in the file disclaimer.txt.
;-
;-------------------------------------------------------------
FUNCTION CTRIM, A, help=hlp
if (n_params(0) lt 1) or keyword_set(hlp) then begin
print,' Do a circular trim on an array.'
print,' b = ctrim(a)'
print,' a = input array. in'
print,' b = output trimmed array. out'
print,' Note: if input array is not square then'
print,' trimmed array is elliptical.'
return, -1
endif
SZ = SIZE(A) ; want shape and size of A.
SXY = SZ(1:2) ; array size in X and Y.
S = MAX(SXY) ; Use max.
S2 = S/2 ; Initial mask radius.
D = SHIFT( DIST(S), S2, S2) ; distance array.
IF SXY(0) NE SXY(1) THEN BEGIN
D = CONGRID(D, SXY(0), SXY(1)) ; shape distance array to input array.
ENDIF
M = D LE S2 ; mask.
RETURN, A*M
END