# NArray demo : Mandelbrot
require 'narray'
def mandel(w,h)
zoom=3.5
z = ( NArray.scomplex(w,1).indgen!/w-0.65 )*zoom +
( NArray.scomplex(1,h).indgen!/h-0.5 )*(zoom*1.im)
c = z.dup
a = NArray.sint(h,w)
idx = NArray.int(h,w).indgen!
for i in 1..30
z = z**2+c
idx_t,idx_f = (z.abs>2).where2
print i," size=",idx_t.size,"\n"
ii = idx[idx_t]
a[ii] = i
break if idx_f.size==0
idx = idx[idx_f]
z = z[idx_f]
c = c[idx_f]
end
a
end
#
# TEST TEST TEST
#
if __FILE__ == $0
require 'nimage'
win = NImage.show mandel(400,400)
print "Hit return key..."
STDIN.getc
win.close
end
syntax highlighted by Code2HTML, v. 0.9.1