xxxxxxxxxx
/*
minha prática do exercicio da roda do artista do curso de Planejamento Estratégico Artistico com a Adriana Braga
This sketch builds on a prior work, "arcos com nome 2", created by Caleb Mascarenhas
http://oficinaprocessing.sketchpad.cc/sp/pad/view/ro.5BApmALKRADz98/rev.12
*/
/*arcos com nome 2
Estudo de Visualização de Dados
por Caleb Mascarenhas Luporini
calebml@gmail.com
Oficina de Programação Visual com Processing
http://oficinaprocessing.com
*/
String [] nomes = {
"CV","BIO","DECLARAÇÃO","ROTINA","PESQUISA","OPERAÇÃO",
"APRESENTAÇÃO", "DIVULGAÇÃO","COMUNICAÇÃO", "VENDAS", "ATIVAÇÃO DE REDES", "RELACIONAMENTO"
};
float[] dados = {
2, 2, 2, 1, 3, 2,
2, 2, 1,1,1,1
};
float raio;
float ai;
float interv;//dados.length;//intervalo é o angulo / tamanho do array
float af;//angulo inicial
color cor;
float somaDados=0;
PFont fonte;
float areaM;
float areaD;
void setup() {
size(700, 700);
smooth();
fonte=loadFont("arial.vlw");
randomSeed(1234567);
for (int i =0;i<dados.length;i++) {
somaDados=somaDados+dados[i];
}
//angulo inicial
ai = 1.5*PI;
interv = 2*PI/dados.length;//intervalo é o angulo dividido pelo tamanho do array
af=ai+interv;
areaM=(0.5*sq(width*0.525))*interv;
println(areaM);
ellipseMode(RADIUS);
rectMode(CENTER);
noLoop();
colorMode(HSB);
}
void draw() {
background(255);
noStroke();
//ellipse cinza do contorno
fill(240);
ellipse(width/2, height/2, width*0.30, width*0.30);
fill(255);
ellipse(width/2, height/2, width*0.29, width*0.29);
fill(240);
ellipse(width/2, height/2, width*0.28, width*0.28);
for (int i = 0;i<dados.length;i++) {
areaD = map(dados[i], 0, max(dados), 0, areaM);
cor = (int)map(dados[i], min(dados), max(dados), 0, 255);
raio = round(sqrt(areaD/interv*0.5));
fill(random(255),255 , 255);
noStroke();
arc(width/2, height/2, raio, raio, ai, af);
//ellipse para texto
fill(0);
ellipse(width/2+(raio*0.7)*cos(ai+interv/2), height/2+(raio*0.7)*sin(af-interv/2), 3, 3);
stroke(0);
strokeWeight(0.2);
//linha para texto
line(width/2+(raio*0.7)*cos(ai+interv/2), height/2+(raio*0.7)*sin(ai+interv/2),
width/2+(width*0.55/2)*cos(ai+interv/2), height/2+(width*0.55/2)*sin(ai+interv/2));
//texto
textAlign(CENTER);
textFont(fonte, 15);
// text(round(dados[i]), width/2+(width*0.75/2)*cos(ai+interv/2), height/2+(width*0.75/2)*sin(ai+interv/2));//valor ao invés de %
//texto nome
//text(nomes[i], width/2+(width*0.75/2+30)*cos(ai+interv/2), height/2+(width*0.75/2+30)*sin(ai+interv/2));
//texto %
text(nomes[i]+" "+dados[i], width/2+(width*0.75/2)*cos(ai+interv/2), height/2+(width*0.75/2)*sin(ai+interv/2),60,50);
ai=af;
af=ai+interv;
noStroke();
}
}
void mousePressed()
{
//save("teste.png");
}