Mi sono esercitato un po' con la formula per quello di Mandenlbrot e il risultato è stato il seguente:
Nel caso di Mandrelbrot il calcolo iterativo è dato da P(z+1)= P(z)^2 + P(x,y). Il codice è il seguente:
on mouseUp put "1,1" into cc put cc & CR into nn delete image "frattale" create image "frattale" put field "grandezza" into kk #deve essere un numero pari put field "maxiter" into rip set the width of image frattale to kk set the height of image frattale to kk #centriamo l'immagine set the loc of image "frattale" to the loc of scrollbar "progr" set the top of image "frattale" to the bottom of scrollbar "progr" set the layer of image "frattale" to 1 repeat with x= 1 to kk repeat with y= 1 to kk put x / kk * 4 - 2 into tx put y / kk * 4 - 2 into ty put fract(tx,ty,rip) & CR after contlist add 1 to cont set the thumbpos of scrollbar "progr" to (round(100/(kk * kk) * cont) ) end repeat end repeat set the lista of me to contlist #per debug repeat for each line tLine in contlist put numtochar(255) after timag put numtochar(tLine* 255 / rip) after timag put numtochar(tLine*255 / rip) after timag put numtochar(tLine*255 / rip) after timag end repeat set the imagedata of image "frattale" to timag #answer "fatto"end mouseUp
function fract x,y,rip put x & comma & y into cc put "0,0" into xy put 0 into d put 0 into cont repeat while d < 2 add 1 to cont if cont > rip then put 0 into cont exit repeat end if put compadd(compmult(xy,xy), cc) into xy put item 1 of xy into xx put item 2 of xy into yy put sqrt(xx^2 + yy^2) into d end repeat return contend fract
function compadd aa,bb put item 1 of aa into aax put item 2 of aa into aay put item 1 of bb into bbx put item 2 of bb into bby put (aax + bbx) , (aay + bby) into temp return tempend compadd
function compmult aa,bb put item 1 of aa into aax put item 2 of aa into aay put item 1 of bb into bbx put item 2 of bb into bby put (aax * bbx - aay * bby) , (aax * bby + aay * bbx) into temp return tempend compmult
Il programma completo lo potete scaricare da qui. Non è che sia entusiasta della velocità di calcolo ottenuta, voi riuscireste a migliorare il codice?

Bello
RispondiEliminaIn effetti è lento ma se metti in "lock screen" con il cursore a orologio guadagni molto molto tempo
Marvi