RosettaCodeData/Task/Mandelbrot-set/UNIX-Shell/mandelbrot-set.sh
2023-09-01 09:35:06 -07:00

36 lines
740 B
Bash

function mandelbrot() {
local -ir maxiter=100
local -i i j {x,y}m{in,ax} d{x,y}
local -ra C=( {0..9} )
local -i lC=${#C[*]}
local -i columns=${COLUMNS:-72} lines=${LINES:-24}
((
xmin=-21*4096/10,
xmax= 7*4096/10,
ymin=-12*4096/10,
ymax= 12*4096/10,
dx=(xmax-xmin)/columns,
dy=(ymax-ymin)/lines
))
for ((cy=ymax, i=0; i<lines; cy-=dy, i++))
do for ((cx=xmin, j=0; j<columns; cx+=dx, j++))
do (( x=0, y=0, x2=0, y2=0 ))
for (( iter=0; iter<maxiter && x2+y2<=16384; iter++ ))
do
((
y=((x*y)>>11)+cy,
x=x2-y2+cx,
x2=(x*x)>>12,
y2=(y*y)>>12
))
done
((c=iter%lC))
echo -n "${C[c]}"
done
echo
done
}