正月はフラクタル・Mandelbrot 集合

そう言えば PostScript で Mandelbrot 集合を書いたことなかったっけ、ということで、書いてみました。

拡大を続けていくと表示が乱れますが、PostScript の浮動小数点数が単精度なせいです。多分。
最近 PostScript 書いてなかったから随分忘れてしまってました。
以下ソース

%!PS-Adobe-2.0 EPSF-2.0
%%BoundingBox: 0 0 200 200

/c{
    % cx cy
    2 dict begin
	/cy exch def
	/cx exch def
	0 0 0 64{
	    % n x y
	    2 copy dup mul exch dup mul
	    2 copy add 4 gt{
		pop pop exit
	    }if
	    exch sub cx add
	    4 1 roll mul 2 mul cy add
	    exch 1 add 3 1 roll
	}repeat
	pop pop
    end
}def
/a{
    % x0 y0 dx dy
    7 dict begin
	/dy exch def
	/dx exch def
	/y0 exch def
	/x0 exch def

	x0 dx 2 div add
	y0 dy 2 div add c
	dup 64 ge{
	    pop 0 0 0
	}{
	    64 div 1 exch sub dup 1
	}ifelse
	setrgbcolor
	x0 y0 dx dy rectfill
    end
}def

/cx -0.760225 def
/cy 0.082 def
0 1 35{
    1.5 exch exp
    /ratio exch def
    /scl 50 ratio mul def
    /width 2 ratio div def
    /dx 0.005 width mul def

    gsave
	0 setlinewidth
	scl scl scale
	width cx sub width cy sub translate
	-1 0.005 1{
	    width mul cx add
	    -1 0.005 1{
		width mul cy add
		2 copy dx dup a
		pop
	    }for
	    pop
	}for
	showpage
    grestore
}for