どさにっきクラウド 〜2009年12月下旬〜

by やまや
<< = >>

2009年12月28日(月)

まんでるぶろ

_ 仕事納めの日には仕事なんかしないであそぶ。なんとなく、フラクタルなお絵描き。マンデルブロ集合。あえて golf 的にコード圧縮。

_ awk 版(mawk or gawk)。140バイト。

> cat mandelbrot.awk
BEGIN{print"P2",w=j=512,w,256;for(;j;--j)for(i=0;i++<w;){for(p=q=n=0;n++<256&&p^2+q^2<4;p=k){k=p^2-q^2+x+i*l/w;q=2*p*q+y+j*l/w}print 257-n}}
> awk -v x=-2 -v y=-1.5 -v l=3 -f mandelbrot.awk
lua 版。167バイト。
> cat mandelbrot.lua
w=512 print("P2",w,w,256)for j=w,1,-1 do
for i=1,w do
p,q=0,0
for k=255,0,-1 do
p,q,n=p^2-q^2+x+i*l/w,2*p*q+y+j*l/w,k  
if p^2+q^2>4 then break end
end
print(n)end
end
> lua -e 'x,y=-2,-1.5 l=3' mandelbrot.lua

_ 上のように実行した場合、-2-1.5i から (-2+3)+(-1.5+3)i の範囲の複素数平面を256階調グレイスケールで描画する。
全体像

_ 標準出力に PGM フォーマットで吐くけど、PGM をまともに扱える画像ビューアはほとんどないと思うので、たとえば ImageMagick の convert とかに食わせて扱いやすい形式にするとよろし。

> ... | convert pgm:- hoge.png
画像サイズを変更する場合はスクリプトを直接いじるべし。

_ x,y=-.115,.915, l=.02 (-0.115+0.915i - -0.095+0.935i)

x,y=-.708,0.284, l=.045 (-0.708+0.284i - 0.663+0.329i)

無題

_ そんなわけで、たぶん今年最後の日記です。遊びにいくので。どこに行くか決めてないけど。

_ ちうわけで来年もよろしく。


<< = >>
やまや