2013年2月8日金曜日

自己平方根フラクタル図形描画(直描画型)

自己平方根フラクタル図形を描きます。

V1.6では画面描画が大幅に高速化されたので、たった105秒で描画できます(iPad3)。
ちなみに、この512*512サイズで、V1.5のiPad3で1時間25分、10MHzのぺけ-BASICでは3時間半かかりました。X-BASIC/68では6時間くらいかかるそうです。

参考文献:Oh!X 1988 3月号 X68000BASIC入門 中森章

// 自己平方根フラクタル図形描画
// pset()利用型
int wx,wy
width(0)
getWidth(wx,wy):/* グラフィック幅を得る
width(64)
// same as X68000 size
if wx>=512 then wx=512
if wy>=512 then wy=512
//
locate(0,0):print "wx*wy=";wx;"*";wy
locate(0,1):print "start=";time$
vpriority(TPAGE,GPAGE0,GPAGE1,GPAGE2,GPAGE3)
vpage(B_TPAGE or B_GPAGE0 or B_GPAGE1 or B_GPAGE2 or B_GPAGE3,YES)
apage(GPAGE0)
int MAXREP=50
int MAXDOT=wx
int MAXCOL=255
float remin=-0.5#
float remax= 0.5#
float immin=-0.5#
float immax= 0.5#
float recon=-0.04#
float imcon=-0.695#
int rep,ix,iy
float x,y,re,im,dx,dy
//
dx=(remax-remin)/MAXDOT
dy=(immax-immin)/MAXDOT
/*
for iy=0 to MAXDOT-1
    locate(0,2):print "line=";iy
    for ix=0 to MAXDOT-1
        x=remin+ix*dx
        y=immin+iy*dy
        for rep=0 to MAXREP
            re=x*x-y*y+recon
            im=2#*x*y+imcon
            if ((re*re+im*im)>4#) then break
            x=re:y=im
        next
        int c=(rep mod MAXCOL)*4
        gcolor(c,c,c,255)
        pset(ix,iy)
    next
next
locate(0,2):print "end=";time$
//
end

Zipファイル :XBetc.zip

0 件のコメント:

コメントを投稿