function setup() {
  createCanvas(800, 800); // Erstellt eine 800x800 Pixel große Leinwand
  noLoop(); // Verhindert die kontinuierliche Wiederholung der draw-Funktion
}

// Globale Variable für die Größe der Kreise
let circleSize = 14;

function draw() {
  background(250); // Setzt den Hintergrund auf eine helle Graufarbe
  
  // Erstellt ein Gitter von Kreisen innerhalb des definierten Bereichs
  for (let x = 100; x <= width - 100; x += 60) {
    for (let y = 100; y <= height - 100; y += 60) {
      // Definiert die zufällige Verschiebung für jeden Kreis
      let xOffset = random(-30, 30);
      let yOffset = random(-30, 30);
      
      // Zeichnet den primären Kreis mit zufälliger Verschiebung und Größe
      fill(0); // Füllfarbe 
      noStroke(); // Keine Umrandung
      ellipse(x + xOffset, y + yOffset, circleSize + random(12), circleSize + random(30));
      
      // Berechnet die Position für gespiegelte Kreise
      let symX = width - (x + xOffset);
      let symY = height - (y + yOffset);
      
      // Zeichnet gespiegelte Kreise mit variierender Größe
      ellipse(symX, y + yOffset, circleSize + random(4), circleSize + random(100));
      ellipse(x + xOffset, symY, circleSize + random(100), circleSize + random(3));
      ellipse(symX, symY, circleSize + random(10), circleSize + random(4));
    }
  }
}

// Ermöglicht das Neuzeichnen des Musters bei Mausklick
function mousePressed() {
  redraw(); 
}