O Espirógrafo
foi idealizado por Bruno Abdank Abakanowicz mas como brinquedo foi inventado
pelo engenheiro britânico Denys Fisher, que exibiu-o em no Nuremberg International Toy Fair, sendo
posteriormente produzido por sua empresa. O brinquedo consiste em um círculo dentro de outro maior que ao gira-lo pode fazer
curvas dos mais variados formatos criando inúmeras formas.
Formas cridas através de um espirógrafo:
Além do brinquedo também existem aparelhos construídos especialmente para isso:
Processing:
float x;
float y;
int i=0;
float ang=0;
int k =10;
int ctrl = 2;
int cor = 0;
void setup(){
size(600,600);
frameRate(360);
smooth();
strokeCap(ROUND);
strokeJoin(ROUND);
background(#00C8D8);
}
void draw(){
fill(#FF003C);
reta(200,(43/2)*15,(3/2)*100);
rect(550,0,50,50);
if (mouseX > 550 && mouseY < 50){
if (mousePressed){
ctrl += 1;
background(#00C8D8);
}
}
rect(550, 550, 50, 50);
if (mouseX > 550 && mouseY > 550){
if(mousePressed){
cor += 1;
if (cor > 255){
cor = 0;
}
}
}
rect(0, 550, 50, 50);
if (mouseX < 50 && mouseY > 550){
if(mousePressed){
i = 0;
}
}
println(ctrl);
}
void reta(float raio, float raioMaior, float a){
x = abs(raioMaior-raio)*cos(ang+i)+a*cos(((raioMaior/raio)-1)*(ang+i))+width/2;
y = abs(raioMaior-raio)*sin(ang+i)-a*sin(((raioMaior/raio)-1)*(ang+i))+height/2;
i+=ctrl*PI;
fill(cor);
stroke(cor);
ellipse(x,y,1,1);
}
O código imita o espirógrafo, pois a função void reta simula dois círculos onde o círculo menor gira tangencialmente dentro do círculo maior. As interações ocorrem nos três botões dispostos pela tela. O de cima vai alterar a variável "i" implicando diretamente na angulação do espirógrafo criando outras formas. O de baixo no canto direito vai alterar a variável "cor" mudando cor do espirógrafo. O do canto inferior esquerdo vai parar o espirógrafo. Quando combinados é possível criar várias formas. Alguns exemplos: