Aproveitei o código de aventuras anteriores. Com o Javascript abaixo é possível analisar este fractal; basta clicar sobre a imagem para inspecionar regiões cada vez menores.
<html>
<head>
</head>
<body>
<canvas id="canvas" width="256" height="256"></canvas>
<script>
function mandel(x,y) {
var c=1;
var r=0;
var i=0;
var MAXITER=512;
while(r*r+i*i<4 && c<MAXITER) {
var t=2*Math.atan2(i,r);
var d=Math.pow(Math.sqrt(r*r+i*i),2);
var nr=d*Math.cos(t)+x;
var ni=d*Math.sin(t)+y;
r=Math.abs(nr);//Aqui ocorre
i=Math.abs(ni);//a mágica
c+=1;
}
return c;
}
var canvas=document.getElementById("canvas");
var ctx=canvas.getContext("2d");
var imageData=ctx.getImageData(0,0,256,256);
var minx=-2;
var miny=-2;
var maxx=2
var maxy=2;
function plot() {
var deltax=(maxx-minx)/256;
var deltay=(maxy-miny)/256;
for(var x=0; x<256; x++) {
for(var y=0; y<256; y++) {
var c=mandel(minx+x*deltax, miny+y*deltay);
var red=(c*8)%255;
var green=(c*9)%255;
var blue=(255-c*4)%255;
var index=(x+y*imageData.width)*4;
imageData.data[index+0]=red;
imageData.data[index+1]=green;
imageData.data[index+2]=blue;
imageData.data[index+3]=0xff;
}
}
ctx.putImageData(imageData,0,0);
}
plot();
function zoom(e) {
var x=minx+(maxx-minx)*((e.clientX-canvas.offsetLeft)/256);
var y=miny+(maxy-miny)*((e.clientY-canvas.offsetTop)/256);
var dx=(maxx-minx)/4;
var dy=(maxy-miny)/4;
minx=x-dx;
maxx=x+dx;
miny=y-dy;
maxy=y+dy;
plot();
}
canvas.onclick=zoom;
</script>
</body>
</html>
Como se espera de um fractal, o tema torna a surgir com formas e cores ligeiramente diferentes.
Nenhum comentário:
Postar um comentário