segunda-feira, 1 de dezembro de 2014

Espirógrafo

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:








Nenhum comentário:

Postar um comentário