Links

Ein Logo für Staaten

Für einen beliebigen Staat übernehmen wir drei Kennzahlen aus dem CIA World Factbook.

String name = "Germany";
float medianAge = 45.7;
float birthRate = 8.37;
float urbanization = 74;

Schriftart und Bildgröße.

PFont f;

void setup() {
  size(400,400);
  f = createFont("HypatiaSansPro-Regular.otf",24);
}

Darstellen von drei Kreisen abhängig von den drei Kennzahlen.

void draw() {
  background(255);

  float kreis1 = birthRate;
  float kreis2 = medianAge;
  float kreis3 = urbanization;

  ellipseMode(CENTER);
  noStroke();

  fill(128,0,0,100);
  ellipse(width/2-kreis1/2,height/2,kreis1,kreis1);
  ellipse(width/2,height/2-kreis2/2,kreis2,kreis2);
  ellipse(width/2+kreis3/2,height/2,kreis3,kreis3);
  
  textFont(f,24);
  textAlign(CENTER,CENTER);
  text(name, width/2, height/2+kreis2);
}

Verändern der Farbe mit einer der Kennzahlen. Dazu: map(...) überträgt Daten aus einen Bereich in einen anderen. Hier: urbanization wird von einer Prozentzahl (von 0 bis 100) zu einem Farbwert (von 0 bis 255, benutzt für Blau).

void draw() {
  background(255);

  float kreis1 = birthRate;
  float kreis2 = medianAge;
  float kreis3 = urbanization;

  ellipseMode(CENTER);
  noStroke();

  fill(64,64,map(urbanization,0,100,0,255),100);
  ellipse(width/2-kreis1/2,height/2,kreis1,kreis1);
  ellipse(width/2,height/2-kreis2/2,kreis2,kreis2);
  ellipse(width/2+kreis3/2,height/2,kreis3,kreis3);
  
  textFont(f,24);
  textAlign(CENTER,CENTER);
  text(name, width/2, height/2+kreis2);
}

Regelung des Abstandes von Bild und Text über den größten Kreis (zwei Drittel vom größten Kreisdurchmesser) via max(...).

void draw() {
  background(255);

  float kreis1 = birthRate;
  float kreis2 = medianAge;
  float kreis3 = urbanization;
  
  fill(64,64,map(urbanization,0,100,0,255),100);
  ellipseMode(CENTER);
  noStroke();
  ellipse(width/2-kreis1/2,height/2,kreis1,kreis1);
  ellipse(width/2,height/2-kreis2/2,kreis2,kreis2);
  ellipse(width/2+kreis3/2,height/2,kreis3,kreis3);
  
  textFont(f,24);
  textAlign(CENTER,CENTER);
  text(name, width/2, height/2+max(kreis1,kreis2,kreis3)*2/3);
}

Abspeichern des Bildes mit saveFrame(...) oder schlauer: PDF-Export.

void keyPressed() {
  saveFrame(name+".tif");
}