domingo, 5 de abril de 2015

Exercício 7: Yin-Yang

Output da Primeira Função(yinYang):

Seguindo a regra de criação citada nos slides das aulas, este código cria símbolos yin-yang.

A Regra de Criação é a seguinte:
As duas metades de circulo grandes tem 5 módulos de raio.
Os dois círculos que formam as curvas tem 2.5 módulos de raio, e e posicionada no centro X e Y mais (ou menos) 2.5 módulos.
Os pequenos círculos ficam no meio dos dois círculos anteriores e possuem raio de 1 módulo.

A primeira função cria um simbolo na posição passada(no caso X e Y no Mouse) com módulo fixo de 40; a segunda função faz o mesmo mas recebe um modulo dinâmico(no caso posição X do mouse dividido por 16); A terceira função faz o mesmo da segunda, com a diferença que ele gera três números randômicos de 0 até 255 e guarda em três posições de um vetor chamado cores1, e faz o mesmo para um vetor chamado cores2, e os números desse vetor são usados para dar cores diferentes ao simbolo, mas que ele continue fazendo sentido.

Output da Ultima Função(yinYang3):

Código-fonte:

int modulo = 40;

void setup() {
  size(400,400);
 
}
void draw(){
  //background(205);
  //yinYang(mouseX,mouseY);
  yinYang2(mouseX,mouseY,mouseX/16);
  //yinYang3(mouseX,mouseY,mouseX/16);

}

void yinYang(int X,int Y){
 
  noStroke();
 
  //Circulo Maior
  fill(255);
  arc(X, Y, 2*5*modulo, 2*5*modulo, PI,TWO_PI, OPEN);
  fill(0);
  arc(X, Y, 2*5*modulo, 2*5*modulo, 0, PI, OPEN);
 
  //Circulos que formam as curvas
  fill(255);
  ellipse(int(X-2.5*modulo),Y,2*2.5*modulo,2*2.5*modulo);
  fill(0);
  ellipse(int(X+2.5*modulo),Y,2*2.5*modulo,2*2.5*modulo);
 
  //Circulos Pequenos
  fill(0);
  ellipse(int(X-2.5*modulo),Y,2*modulo,2*modulo);
  fill(255);
  ellipse(int(X+2.5*modulo),Y,2*modulo,2*modulo);

}

void yinYang2(int X,int Y,int modulo){
 
  noStroke();
 
  //Circulo Maior
  fill(255);
  arc(X, Y, 2*5*modulo, 2*5*modulo, PI,TWO_PI, OPEN);
  fill(0);
  arc(X, Y, 2*5*modulo, 2*5*modulo, 0, PI, OPEN);
 
  //Circulos que formam as curvas
  fill(255);
  ellipse(int(X-2.5*modulo),Y,2*2.5*modulo,2*2.5*modulo);
  fill(0);
  ellipse(int(X+2.5*modulo),Y,2*2.5*modulo,2*2.5*modulo);
 
  //Circulos Pequenos
  fill(0);
  ellipse(int(X-2.5*modulo),Y,2*modulo,2*modulo);
  fill(255);
  ellipse(int(X+2.5*modulo),Y,2*modulo,2*modulo);

}

void yinYang3(int X,int Y,int modulo){
 
  noStroke();
 
  int[] cores1 = new int[3];
  int[] cores2 = new int[3];
  for(int cont=0;cont<3;cont++){
    cores1[cont] = int(random(255));
    cores2[cont] = int(random(255));
  }
 
  //Circulo Maior
  fill(cores1[0],cores1[1],cores1[2]);
  arc(X, Y, 2*5*modulo, 2*5*modulo, PI,TWO_PI, OPEN);
  fill(cores2[0],cores2[1],cores2[2]);
  arc(X, Y, 2*5*modulo, 2*5*modulo, 0, PI, OPEN);
 
  //Circulos que formam as curvas
  fill(cores1[0],cores1[1],cores1[2]);
  ellipse(int(X-2.5*modulo),Y,2*2.5*modulo,2*2.5*modulo);
  fill(cores2[0],cores2[1],cores2[2]);
  ellipse(int(X+2.5*modulo),Y,2*2.5*modulo,2*2.5*modulo);
 
  //Circulos Pequenos
  fill(cores2[0],cores2[1],cores2[2]);
  ellipse(int(X-2.5*modulo),Y,2*modulo,2*modulo);
  fill(cores1[0],cores1[1],cores1[2]);
  ellipse(int(X+2.5*modulo),Y,2*modulo,2*modulo);

}

Nenhum comentário:

Postar um comentário