Diagramas de Bifurcações em 140 caracteres
Estas imagens foram feitas com mini-programas em JavaScript que tem 140 caracteres (ou menos). O site dwitter.net é similar ao Twitter, mas para postar pequenos códigos em javascript que produzam algo que possa ser visualmente interessante.
Os Diagramas de Bifurcação tradicionamente aparecem no gráfico da Equação Logística xₙ₊₁ = r * xₙ(1-xₙ), mas percebi que muitas outras funções iteradas (geralmente uma composição de senos e cossenos) também apresentam o mesmo diagrama!
No código das imagens abaixo, “C” significa cosseno, “S” significa seno e “t” é a variável que representa o tempo. O mesmo código é executado 60 vezes por segundo e o resultado é uma imagem ou animação. As imagens são feitas de pequenos retângulos impressos na tela <canvas> com o comando:
x.fillRect(Posição X, Posição Y, largura do retângulo, altura do retângulo)
Código fonte (139 caracteres): https://www.dwitter.net/d/12452
t||(a=b=0)
for(i=5e3;i-- )
x.fillStyle=`hsl(9,45%,${S(t*4)*50}%)`,
x.fillRect(960+b*S(a*1.5),540-b*C(a*2),1,2),
a+=1.8*C(2.6*a)+C(t/4),
b+=.001
Código fonte (96 caracteres): https://www.dwitter.net/d/12441
t||(a=b=0)
for(i=8000;i--;)
x.fillRect(560+b*C(a),540+b*S(a),1,1),
a+=.847*C(t+5*a)+C(t),
b+=.002
Código fonte (100 caracteres): https://www.dwitter.net/d/12440
t||(a=b=0)
for(i=2e3;i--;)
x.fillRect(960+b*C(a),540+b*S(a),1,1),
a+=1.8*C(2.6*a)+C(t/4+.009),
b+=.002
Código fonte (114 caracteres): https://www.dwitter.net/d/12258
Xp=X=Y=
x.globalAlpha=.3
for(i=2e3;i--;){
X=Y**.4+t/9
Y=-.15*Xp+2.7*Y-Y*Y*Y
Xp=X
x.fillRect(X*850–300,Y*600,1,1)
}
Código fonte (103 caracteres): https://www.dwitter.net/d/12018
X=t/6;Y=2;s=999;x.globalAlpha=.05;for(i=3e3;i--;)
Y=1.66–2*(.1*X-S(1.2*Y)),
x.fillRect(X*s,Y*s-700,3,3)
Código fonte (140 caracteres): https://www.dwitter.net/d/12030
a=b=t;s=2e3;x.globalAlpha=.2
for(i=s;--i;)
x.fillStyle=R(a*i,9,i*b/6),
x.fillRect(1100+a*s,b*s,2,2),
a=.2+.1*S(2*b)+C(2*a),
b=S(a/5)+C(b)*t/12
Código fonte (139 caracteres): https://www.dwitter.net/d/12468
t||(a=b=0)
for(i=3e3;i--;)
x.fillStyle=`hsl(9,45%,${S(t*4)*50}%)`,
x.fillRect(960+b*C(a)+(a&1?b:-b),540+b*S(a),1,2),
a+=2*C(2.6*a)-t/2,
b+=.001
Código fonte (140 caracteres): https://www.dwitter.net/d/12470
t||(a=b=0)
if(t<6)for(i=4e3;i--;)
x.fillStyle=`hsl(9,45%,${S(t*4)*50}%,30%)`,
x.fillRect(960+b*S(a),540+b*C(a),1,1),
a+=2*C(2.7*a)-t/8,
b+=.0003
Para ver essas e outras imagens, interagir com as equações e criar suas próprias variações, veja meu perfil no Dwitter:
https://www.dwitter.net/u/rodrigo.siqueira