A função criaPoligono recebe o raio e o numero de lados. baseado no numero de lados a função gera as coordenadas X e Y dos vértices do polígono, exemplo: 4 lados ele gera coordenadas de três pontos, sendo o ultimo também o primeiro, após gerar os valores ela os guarda em dois vetores X e Y criadas com o numero de índices sendo o numero de lados.
Após isso linhas são desenhadas com as coordenadas, tendo um pequeno tratamento de exceção para ArrayOutOfBounds, para se o próximo índice não existir, indicar para o primeiro índice.
A segunda função se difere apenas na opção de passar o centro do poligono.
Pretendo atualizar esse código usando o código da flor x para deixar os pontos em x invés de +.
Código-Fonte:
float x,y;
void setup() {
size(800, 600);
//criaPoligono(120,4);
criaPoligono2(120,4,width/2,height/2);
//linhas centrais que cruzam a tela
line(0,height/2,width,height/2);
line(width/2,0,width/2,height);
}
void draw() {
retornaLinha(2,60);
//println("X = "+x+" Y = "+y);
//line(width/2,height/2,int(x)*16,int(y)*16);
}
void retornaLinha(float r, float ang){
int[] numbers = new int[3];
x = r * cos(radians(ang));
y = r * sin(radians(ang));
//pontos[0] = int(x);
// pontos[1] = int(y);
}
void criaPoligono(float r, int lados){
int[] X = new int[lados];
int[] Y = new int[lados];
int angulo = 360 / lados;
int yopa = 0;
int cont = 0;
while(cont<lados){
x = r * cos(radians(yopa));
y = r * sin(radians(yopa));
X[cont] = int(x);
Y[cont] = int(y);
strokeWeight(2);
// line(width/2+int(x),height/2+int(y),int(x)+width/2,int(y)+height/2);
println("X = "+x+" Y = "+y);
cont++;
yopa+=angulo;
}
cont=0;
while(cont<lados){
try{
line(X[cont]+width/2,Y[cont]+height/2,X[cont+1]+width/2,Y[cont+1]+height/2);
}catch(Exception e){
line(X[cont]+width/2,Y[cont]+height/2,X[0]+width/2,Y[0]+height/2);
}
cont++;
}
}
void criaPoligono2(float r, int lados, int centerX, int centerY){
int[] X = new int[lados];
int[] Y = new int[lados];
int angulo = 360 / lados;
int yopa = 0;
int cont = 0;
while(cont<lados){
x = r * cos(radians(yopa));
y = r * sin(radians(yopa));
X[cont] = int(x);
Y[cont] = int(y);
strokeWeight(2);
// line(width/2+int(x),height/2+int(y),int(x)+width/2,int(y)+height/2);
println("X = "+x+" Y = "+y);
cont++;
yopa+=angulo;
}
cont=0;
while(cont<lados){
try{
line(X[cont]+centerX,Y[cont]+centerY,X[cont+1]+centerX,Y[cont+1]+centerY);
}catch(Exception e){
line(X[cont]+centerX,Y[cont]+centerY,X[0]+centerX,Y[0]+centerY);
}
cont++;
}
}
Nenhum comentário:
Postar um comentário