# FITS demo
require 'fits'
require 'nimage'
def triang x, px
y = NArray.float(*x.shape)
i1,i2 = (x>px).where2
y[i1] = NMath.sin((1-x[i1]) * (Math::PI/2/(1-px)) )
y[i2] = NMath.sin((1+x[i2]) * (Math::PI/2/(1+px)) )
p y.min
y
end
# Read-in Image
f = Fits.new
f.read( $*.shift || 'dss_m51.fits' )
NImage.show f.data
nx,ny = f.data.shape
# Morphing parameters
px,py = [ 0.3, -0.6]
dx,dy = [-0.3, 0.7]
indx = NArray.float(nx,1).indgen!
indy = NArray.float(1,ny).indgen!
ix = triang indx/(nx-1)*2-1, px
iy = triang indy/(ny-1)*2-1, py
ii = ix * iy
ix = (indx + ii*(dx*(nx-1)/2)).round
iy = (indy + ii*(dy*(ny-1)/2)).round
NImage.show f.data[ix+iy*nx]
print "Hit return key..."
STDIN.getc
syntax highlighted by Code2HTML, v. 0.9.1