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);
}
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. |