function setup() {
					// --- GRUNDEINSTELLUNGEN ---
					createCanvas(800, 800); // Erstellt eine Zeichenfläche von 300x300 Pixeln
					drawPattern(); // Ruft die Funktion zum Zeichnen des Musters auf
				  }
				  
				  function drawPattern() {
					noiseSeed(millis()); // Ändert den Seed für die Noise-Funktion bei jedem Aufruf
					background(255);       // Setzt die Hintergrundfarbe auf Weiß
					noFill();              // Deaktiviert das Füllen von Formen (Linien werden nicht gefüllt)
					stroke(0);             // Setzt die Linienfarbe auf Schwarz
				  
					// --- STEUERPARAMETER FÜR LINIEN ---
					let spacing = 15;      // Abstand zwischen den Hauptlinienbündeln
					let noiseScale = 0.05; // Skalierungsfaktor für die Perlin-Noise-Verzerrung (beeinflusst die "Weichheit" der Kurven)
				  
					// --- HAUPTLINIEN ZEICHNEN ---
					// Diese Schleife iteriert von oben nach unten über die Zeichenfläche in 'spacing'-Schritten
					for (let y = 0; y < height; y += spacing) {
					  let isDrawing = false; // Zustand, ob aktuell eine Linie gezeichnet wird
					  // Diese innere Schleife iteriert von links nach rechts über die Zeichenfläche in kleinen Schritten
					  for (let x = 0; x <= width; x += 5) { // Kleinere Schritte für feinere Liniensegmente
						// Berechnet einen Versatz basierend auf Perlin Noise, um eine organische Wellenform zu erzeugen
						let offset = noise(x * noiseScale, y * noiseScale) * 20; // Die '20' skaliert die Stärke des Versatzes
						if (random(1) > 0.1) { // 90% Wahrscheinlichkeit, das aktuelle Liniensegment weiterzuzeichnen
						  if (!isDrawing) {    // Wenn noch keine Linie gezeichnet wird...
							beginShape();      // ...starte eine neue Form (Linie)
							isDrawing = true;  // Merke, dass jetzt gezeichnet wird
						  }
						  curveVertex(x, y + offset); // Füge einen Punkt zur geschwungenen Linie hinzu
						} else if (isDrawing) { // Wenn mit 10% Wahrscheinlichkeit unterbrochen wird UND gerade gezeichnet wird...
						  endShape();          // ...beende die aktuelle Linie
						  isDrawing = false;   // Merke, dass nicht mehr gezeichnet wird
						}
					  }
					  if (isDrawing) endShape(); // Stelle sicher, dass eine am Rand begonnene Linie auch beendet wird
					}
				  
					// --- ZWISCHENVERBINDUNGEN ZEICHNEN ---
					// Diese Schleife iteriert versetzt zu den Hauptlinien von oben nach unten
					// Ziel ist es, Verbindungen oder Überlappungen zwischen den Hauptlinienbündeln zu erzeugen
					for (let y = spacing / 2; y < height; y += spacing) { // Startet bei der Hälfte des 'spacing' für den Versatz
					  let isDrawing = false; // Zustand, ob aktuell eine Verbindungslinie gezeichnet wird
					  // Diese innere Schleife iteriert wieder von links nach rechts
					  for (let x = 0; x <= width; x += 5) {
						// Erneute Berechnung eines Versatzes für die Verbindungslinien
						let offset = noise(x * noiseScale, y * noiseScale) * 20;
						if (random(1) > 0.1) { // 90% Wahrscheinlichkeit, weiterzuzeichnen
						  if (!isDrawing) {
							beginShape();
							isDrawing = true;
						  }
						  curveVertex(x, y + offset); // Füge Punkt zur Verbindungslinie hinzu
						} else if (isDrawing) {
						  endShape();
						  isDrawing = false;
						}
					  }
					  if (isDrawing) endShape(); // Beende die Linie, falls sie noch offen ist
					}
				  }
				  
				  function mousePressed() {
					drawPattern(); // Zeichnet das Muster neu, wenn die Maus geklickt wird
				  }