terça-feira, 17 de janeiro de 2017

Atividade 20 - Desenhar polígono regular de acordo com quantidade de lados.

Criar uma aplicação que desenha um polígono regular centralizado na tela com a quantidade de lados informada no próprio código. Discutir a solução adotada em seu blog.

Com o uso de coordenadas polares a elaboração desse código fica mais fácil. Primeiramente temos duas funções, uma para X e outra para Y que  recebe um ângulo e o raio, e faz a conversão para posições X e Y correspondentes, de acordo com seno e cosseno do ângulo multiplicado pelo raio.

De acordo com o número de lados que é controlado por "n" no próprio código, descobrimos os ângulos igualmente divididos pela fórmula ang=2*PI/n;.

Com uma estrutura de repetição podemos controlar usando o ponto inicial descoberto e descobrir o próximo incrementando o ângulo. Para desenhar a linha, a função line() exige que você saiba as posições equivalentes das duas pontas, com isso guardamos outra variável com mesmos dados só que incrementados com 1, para ter esses dados necessários. E então só jogamos dentro da função line, só alterar o número de n que um novo polígono equivalente é gerado. 

Fiz uma condição de que se o número de n for menor ou igual a 0, um círculo é desenhado, se não, ai vai para o for que desenha de acordo com quantidade de lados.


int n=6;
int r=200;

void setup ()
{
  size(600,600);
  
float ang=2*PI/n;

if(n<=2)
ellipse(300,300,2*r,2*r);


if(n>2) {
for(int i=0;i<n;i++) {

float a=i*ang;
float x=converterX(a,r)+300;
float y=converterY(a,r)+300;

float a2=(i+1)*ang;
float x2=converterX(a2,r)+300;
float y2=converterY(a2,r)+300;

//ellipse(x,y,10,10);
line(x,y,x2,y2);
  }
}

}

float converterX (float ang, float R)
{
   return R*cos(ang);
  
}

float converterY (float ang, float R)
{
 return R*sin(ang);
  
}


Exemplo com n=6.

Comentários
0 Comentários

Nenhum comentário:

Postar um comentário

recent posts