Exercício 17 - Polígono regular
Neste exercício
irei criar uma aplicação que desenha um polígono regular centralizado na tela
com a quantidade de lados informada no próprio código.
Bom, como fiz este
exercício na Aula 19 de Matemática aplicada á Multimídia I então irei coloca-lo
da maneira que aprendi nessa aula, utilizando coordenadas polares e a
transformando coordenada cartesiana.
Para isso criei
algumas variáveis que são:
·
angulo: necessária para
saber qual angulo cada "triangulo" do polígono terá
·
lados: o número de lados
que o polígono terá
·
pos(vetor): posição x
e y atual;
·
aux(vetor): posição x
e y anterior;
Primeiro criei uma
função pra transformar coordenadas polares em cartesianas, explicada em sala de
aula, basta ter o angulo e o raio, então a posição x será r*(cos(ang)) e o y
será r*(sin(ang)), como mostra na figura abaixo:
Depois, foi
necessário criar uma repetição que irá pegar a variável i(de 0 até o n° de lados), e multiplica-la pelo angulo, assim
teremos o valor x e y atual, mas antes será necessário armazenar o x e y
anteriores em outro vetor, por isso foi criado o vetor aux, então será criada uma line
nas posições (aux[0],aux[1],pos[0],pos[1]).
Código completo:
float angulo; int lados=6; float[] pos = new float[2]; float[] aux = new float[2]; void setup(){ size(600,600); angulo = (PI*2)/lados; translate(width/2,height/2); pos = polar_cartesiano(angulo,200); for(int i = 0;i<=lados;i++){ aux = pos; pos = polar_cartesiano(angulo*i,200); line(aux[0],aux[1],pos[0],pos[1]); }
textSize(30); if(lados>1){ text("Numero de lados do polígono: "+lados,30,30); }else{ text("Numero de lados do polígono: 0",30,30); }} float[] polar_cartesiano(float ang, float r){ float[] posL = new float[2]; posL[0] = r*(cos(ang)); posL[1] = r*(sin(ang)); return posL; }
Programa feito com processing.js com algumas modificações utilizando HTML para ficar mais dinâmico:
Insira o N° de lados do polígono:
Comentários
Postar um comentário