Esse exercício é um aprimoramento do exercício anterior, mostrando outros gráficos representando agora o numero de nascimentos e mortes das gerações.
O gráfico em pizza mostra a porcentagem de mortes e nascimentos da geração corrente, usando apenas uma pequena relação que resulta em um ângulo que e usado para desenhar a "fatia" correspondente.
O gráfico de barras é apenas uma adaptação do gráfico de linhas, a adaptação feita no código anterior foi salvar as motes de cada geração.
Código-Fonte:
float vendaAn;
int NumeroGeracao=1;
int[] escheme = {
};
int[] escheme2 = {
};
int[] Mundoatual = {
0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1
};
int[] MundoNovo = new int[32];
void setup() {
size(1280, 720);
frameRate(1);
background(0);
//Mostramundo();
}
int CruzaCelulas(int Posicao) {
int NumeroCelulas = Mundoatual[Posicao-1] + Mundoatual[Posicao] + Mundoatual[Posicao+1];
return NumeroCelulas;
}
void Mostramundo() {
for (int i=0; i<Mundoatual.length; i++) {
if (Mundoatual[i]==1) {
ellipse(i*20, NumeroGeracao *30, 20, 20);
}
}
}
void estatisticas() {
int aux=0;
int aux2=0;
println(escheme.length);
// if(escheme.length==0 || escheme[escheme.length-1]!=0){
for (int cont=0; cont<Mundoatual.length; cont++) {
aux += Mundoatual[cont];
if (Mundoatual[cont]==0) {
aux2++;
//} else {
// aux++;
}
}
//escheme = append(escheme,aux);
//escheme2 = append(escheme2,aux2);
// }else{
//ellipse(width/2, height/2, 40, 40);
println((aux2*360)/32);
//fill(0,0,255);
//arc(width/2,height/2,80,80, radians((aux2*360)/32), radians((aux*360)/32));
background(0);
fill(50,50,220);
rect(50,50,10,10); text("Nascimentos",65,60);
text("Nascimentos: "+(aux*100)/32+"%",50,95);
arc(width/2,height/2,160,160, radians((aux2*360)/32), radians(360));
fill(220,50,50);
rect(50,65,10,10); text("Mortes",65,75);
text("Mortes: "+(aux2*100)/32+"%",50,110);
arc(width/2,height/2,160,160, 0, radians((aux2*360)/32));
// }
//Grafico em barras
/*
if(escheme.length==0 || escheme[escheme.length-1]!=0){
for(int cont=0;cont<Mundoatual.length;cont++){
aux += Mundoatual[cont];
if(Mundoatual[cont]==0){
aux2++;
}
}
escheme = append(escheme,aux);
escheme2 = append(escheme2,aux2);
}else{
text("Nascimentos:",50,50);
for(int cont=0;cont<escheme.length;cont++){
stroke(255);
if(cont<escheme.length-1){
text(escheme[cont],(cont+1)*50-6,(height - escheme[cont]*10-6));
rect((cont+1)*50-6,(height - escheme[cont]*10-6),20,height-(height - escheme[cont]*10-6));
//line((cont+1)*150-6,(height - escheme[cont]*50-6),(cont+2)*150-6,(height - escheme[cont+1]*50-6));
}else{
text(escheme[cont],(cont+1)*50-6,(height - escheme[cont]*10-6));
}
}
line(width/2,0,width/2,height);
text("Mortes:",width/2+50,50);
for(int cont=0;cont<escheme2.length;cont++){
stroke(255);
// if(cont<escheme2.length-1){
text(escheme2[cont],width/2+(cont+1)*50-6,(height - escheme2[cont]*10-6));
rect(width/2+(cont+1)*50-6,(height - escheme2[cont]*10-6),20,height-(height - escheme2[cont]*10-6));
//line((cont+1)*150-6,(height - escheme[cont]*50-6),(cont+2)*150-6,(height - escheme[cont+1]*50-6));
// }else{
// text(escheme2[cont],width/2+(cont+1)*50-6,(height - escheme2[cont]*10-6));
// }
}
}
*/
//Grafico em linhas
/*
if(escheme.length==0 || escheme[escheme.length-1]!=0){
for(int cont=0;cont<escheme.length;cont++){
stroke(255)
point((cont+1)*150-6,(height - escheme[cont]*50-6));
if(cont<escheme.length-1){
text(escheme[cont],(cont+1)*150-6,(height - escheme[cont]*50-6));
line((cont+1)*150-6,(height - escheme[cont]*50-6),(cont+2)*150-6,(height - escheme[cont+1]*50-6));
}else{
text(escheme[cont],(cont+1)*150-6,(height - escheme[cont]*50-6));
}
}
*/
/*
for(int cont=0;cont<escheme.length;cont++){
println((cont+1)+"ª Geração: "+escheme[cont]);
if(escheme[cont]==0){
noLoop();
}
}
*/
}
void draw() {
int NumeroCelulas = 0;
// Mostramundo();
estatisticas();
//println("Tamanho atual: "+Mundoatual.length);
for (int o=1; o<Mundoatual.length-1; o++) {
NumeroCelulas = CruzaCelulas(o);
if (NumeroCelulas==2) {
MundoNovo[o]=1;
} else {
MundoNovo[o]=0;
}
}
arrayCopy(MundoNovo, Mundoatual, 32);
NumeroGeracao++;
}
Nenhum comentário:
Postar um comentário