Brownsche Irrfahrt in Processing
Powered by Processing.js
for (int i=0; i < NUM; i++) {
pos[i] = new PVector (random (width), random (height));
col[i] = color (random (90, 250), 170, 178);
}
Innerhalb der for-Schleife wird jedes Feld der beiden Arrays befüllt, wobei dem Index i jeweils eine Position und Farbe zugesprochen wird. Die selbe Schleifen-Struktur verwenden wir anschließend im draw(), um die Positionen zufällig zu bewegen und letztendlich abzubilden. Die Bewegung geht mit dem random() Aufruf für x und y vonstatten; wir fügen der aktuellen Position auf beiden Achsen einen Zufallswert im Bereich von -1 bis 1 hinzu.
pos[i].x += random (-1, 1); pos[i].y += random (-1, 1);Diese Zeilen beschreiben die Bewegung. Damit der Punkt die Zeichenfläche nicht verlässt, überprüfen wir die Grenzen (0 → Breite/Höhe) durch vier if Abfragen und Zeichnen den Punkt mittels point().
Der Sketch
// Anzahl der Punkte
int NUM = 30;
// Array zum speichern der Positionen
PVector[] pos = new PVector[NUM];
// Array zum speichern der Farben
color[] col = new color[NUM];
void setup () {
// Größe und Hintergrundfarbe
// des Sketches definieren
size(550, 200);
background (79);
// Für jeden Punkt...
for (int i=0; i < NUM; i++) {
// Lege Zufallsposition fest
pos[i] = new PVector (random (width), random (height));
// Lege Zufallsfarbe fest
col[i] = color (random (90, 250), 170, 178);
}
}
void draw () {
// Für jeden Punkt im array 'pos'
for (int i=0; i < NUM; i++) {
// die Position zufällig modifiziere
pos[i].x += random (-1, 1);
pos[i].y += random (-1, 1);
// Überprüfe an allen Seiten des Sketchfensters
// ob der Punkt dieses gerade verlässt, verhindern!
// Links
if (pos[i].x < 0)
pos[i].x = 0;
// Rechts
if (pos[i].x > width)
pos[i].x = width;
// Oben
if (pos[i].y < 0)
pos[i].y = 0;
// Unten
if (pos[i].y > height)
pos[i].y = height;
// Setze die Strich-(Punkt)-Farbe
// für den entsprechenden Punkt im Array
stroke (col[i]);
// betreffendes Pixel in der Zeichfläche
// mit der Strichfarbe füllen
point (int (pos[i].x), int (pos[i].y));
}
}