Bauhaus Formen

float seg = 0; //Segmentzähler

void setup() {
  size(800, 800);
  smooth();
  noStroke();
}

void draw() {
  background(0);
  fill(255,255,0);
  maleSegmente(100,mouseX,mouseY,0,90);
  fill(255,0,0);
  maleSegmente(100,mouseX*2,mouseY*2,1,45);
  fill(0,0,255);
  maleSegmente(80,mouseY,mouseX,40,90);
}

void maleSegmente(int r,float x,float y, float s, float g) {  
  float segmente = 0;
  segmente = 3 + seg + s;
  float angleStep = 360/segmente;

  beginShape();
  vertex(x, y); 
  for (float angle=0; angle<=360; angle+=angleStep) {
    float vx = x + cos(radians(angle-g))*r;
    float vy = y + sin(radians(angle-g))*r;
    vertex(vx, vy);
  }
  vertex(x + cos(radians(360-g))*r, y + sin(radians(360-g))*r);
  endShape();
}

void keyReleased() {
  if (key == CODED) {
    if (keyCode == UP) {
      seg += 1;
    } else if (keyCode == DOWN) {
      if (seg >= 1) {
        seg -= 1;
      }
    } 
  }
}