<%
pixsize = 6
cols,lines = 160, 60
minre,minim = -2.04, -1.15
maxre,maxim = 0.9, 1.15
maxiter = 16
puts '<html><head>'
puts '<title>Mandelbrot fractal in ERuby</title>'
puts '<style type="text/css"><!--'
maxiter.times do |n|
pitch1=n*25/maxiter
pitch2=n*16/maxiter
pitch3=n*10/maxiter
pitch1=15 if pitch1>15
printf '.c%X {', n
printf ';color:#%X%X%X ', pitch1,pitch2,pitch3
printf ';background:#%X%X%X', pitch1,pitch2,pitch3
puts '}'
end
print 'body{background:white;color:white'
print ';font-family:monospace;font-size:', pixsize, 'px}'
print '--></style></head><body><pre>'
$defaultcolor=maxiter-1
$lastcolor=$defaultcolor
def color(c)
return if c==$lastcolor
endcolor
printf '<span class=c%X>', c unless c==$defaultcolor
$lastcolor=c
end
def endcolor
print '</span>' unless $lastcolor == $defaultcolor
end
im=minim
lines.times do
re=minre
cols.times do
zr,zi = re,im
n=0
(0..maxiter).each do |n|
a,b = zr*zr, zi*zi
break if a+b > 4.0
zr,zi = a-b+re, 2*zr*zi+im
end
color n%maxiter
print '#'
re += (maxre-minre)/cols
end
im += (maxim-minim)/lines
puts
end
endcolor
puts '</pre></body></html>'
%>
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################