quinta-feira, 13 de janeiro de 2011

Explorações fractais VII

Potências de números complexos eram um problema até que descobri a fórmula de de Moivre. Acontece que é muito mais fácil calcular potências de números complexos usando coordenadas polares. Então, a solução é converter cada ponto para coordenadas polares, calcular a potência e voltar para as coordenadas originais.

O código que segue mostra minha implementação.


var POWER=2.666;
var NEGATIVE=false;

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=POWER*Math.atan2(i,r);
var d=Math.pow(Math.sqrt(r*r+i*i),POWER);
var nr=d*Math.cos(t)+x;
var ni=d*Math.sin(t)+y;
if(NEGATIVE) {
r=nr/(nr*nr+ni*ni);
i=-ni/(nr*nr+ni*ni);
} else {
r=nr;
i=ni;
}
c+=1;
}
return c;
}

Deixei a função mandel() pronta para receber potências negativas e positivas: basta alterar o valores de POWER e NEGATIVE.

Experimentei com -3,7 e o resultado se parece com lâminas de patologia.



Depois, tentei 2,666 e descobri que essa potência também gera detalhes com aparência orgânica.

Nenhum comentário: