// Funktionen //---------------------------------------------------------------------------------------------------- // starten / stoppen per Mausklick void Clicked() { if (schlaufen == true) { noLoop (); schlaufen = false; } else if (schlaufen == false) { loop (); schlaufen = true; } } //---------------------------------------------------------------------------------------------------- // "n"-Taste gedrŸckt: initialisiert das Programm neu (lŠdt neue "Zufallsfassade") // "p"-Taste gedrŸckt: schreibt pdf-File des aktuellen Frames void keyPressed() { if (key == 'n' || key == 'N') { background (Hintergrund); n = 0; // n zurŸcksetzen ZaehlerOeffnungen = 0; // …ffnungszŠhler zurŸcksetzen AnzahlFertigeZellen = 0; // ZŠhler zurŸcksetzen for (int s = 0; s < AnzSpalten; s++) { // Felder generieren for (int z = 0; z < AnzZeilen; z++){ meinFeld [z*AnzSpalten + s] = new Feld (s, z); } } for (int i=0; i < AnzahlOeffnungen; i++) { // Oeffnungen neu generieren und zeichnen meineOeffnung [i] = new Oeffnung (); ZaehlerOeffnungen++; meineOeffnung [i].zeichnen (); } meineZelle [n] = new Zelle (); // erste Zelle generieren meineZelle [n].zeichnen (); loop (); } if (key == 'p' || key == 'P') { pdfSchreiben(); } } //---------------------------------------------------------------------------------------------------- // schreibt pdf-File des aktuellen Frames void pdfSchreiben() { println ("pdf schreiben"); beginRecord (PDF, "frame-####.pdf"); fill (Hintergrund); // Hintergrund zeichnen noStroke (); rectMode(CORNERS); rect (0, 0, width, height); for (int i=0; i<=n; i++) { // Zellen zeichnen meineZelle [i].zeichnen (); } for (int i=0; i < AnzahlOeffnungen; i++) { // Oeffnungen zeichnen meineOeffnung [i].zeichnen (); } endRecord(); println ("pdf geschrieben"); } //---------------------------------------------------------------------------------------------------- // zeichnet einen Kreis in einen anderen, Eingabe: Mittelpunkt und Radius des umfassenden Kreises, // Richtung des BerŸhrungspunktes, Radius und Farbe des inneren Kreises // Ausgabe: Koordinaten des Mittelpunktes des inneren Kreises als Array float [] zeichne_KreisInKreis (float xUmfassung, float yUmfassung, float rUmfassung, float xKreis, float yKreis, float rKreis, color fKreis) { float [] Zentrum = new float [2]; Zentrum [0] = xUmfassung + (rUmfassung / rKreis)*xKreis - xKreis; // Koordinaten des Mittel- Zentrum [1] = yUmfassung + (rUmfassung / rKreis)*yKreis - yKreis; // punktes des inneren Kreises if (rKreis > Rand) { zeichne_Kreis (Zentrum [0], Zentrum [1], rKreis - Rand, fKreis); } return Zentrum; } //---------------------------------------------------------------------------------------------------- // zeichnet einen Kreis mit einer bestimmten Farbe void zeichne_Kreis (float xKreis, float yKreis, float rKreis, color fKreis) { ellipseMode (CENTER_RADIUS); noStroke (); fill (fKreis); ellipse (xKreis, yKreis, rKreis, rKreis); } //----------------------------------------------------------------------------------------------------