Regen in Processing erstellen?

2 Antworten

Hmm, Regen visualisieren. Mal unabhängig von der konkreten Programmiersprache würde ich das folgendermaßen visualisieren:

- Erstmal eine globale Einstellung für die "Regenintensität". Damit wird grob gesagt festgelegt, wie viele Regentropfen zeitgleich überhaupt sichtbar sein sollen.

- Dann eine globale Einstellung für die "Windrichtung". Minuswerte nach links, Pluswerte nach rechts, und je größer der Absolutwert, desto schräg.

- Dann brauchst Du ein Array variabler(!) Größe, jeweils mit x/y-Tupeln für die Regentropfen.

Soweit die Datenhaltung.

Verwaltungsmethoden:

- Änderung Regenintensität: falls neue Intensität größer als alte Intensität, Array vergrößern und neue Zellen mit Nullwerten vorbelegen. Falls neue Intensität kleiner als alte Intensität, einfach kürzen und hintere Werte rauswerfen.

- Timermethode: muss in gleichmäßigem Abstand von irgendeiner Hauptschleife aus gerufen werden. Iteriert über das Regentropfen-Array. Pro verarbeitetem Tropfen erstmal schauen, ob Nullkoordinaten. Falls ja, zufällig x-Position bestimmen. Ansonsten an alter Position "wegmachen", x/y-Koordinaten aktualisieren (bei x die Windrichtung einbeziehen, y einfach hochzählen). Wenn Tropfen am unteren Rand angekommen, Koordinaten ausnullen. Ansonsten Tropfen zeichnen.

Damit sollte man einen Regenschauer visualisieren können.

Wenn Du unterschiedlich große Tropfen haben willst, kannst Du im Array statt x/y-Tupeln auch noch einen dritten Wert für einen Tropfentyp speichern. Den kannst Du bei Neuerzeugung eines Tropfens random-mäßig vorbelegen und dann später konsistent pro Tropfen durchgängig visualisieren.

Wenn Du unterschiedliche Niederschlagsgeschwindigkeit haben möchtest, änderst Du einfach die Häufigkeit, die die Timermethode gerufen wird.

Ist alles ganz easy... :-)

Verzichte doch auf die a Variabel und mache statt:

ellipse (a,i,50,50);

das hier:

ellipse (random(25,775),i,50,50);

Woher ich das weiß:Berufserfahrung – Beruf, Schule, Hobby und eigene Erfahrungen

Lukomat99 
Beitragsersteller
 07.01.2017, 18:42

Du meinst, ich soll direkt random (25,775) in die ellipse (); schreiben?

Das habe ich schon probiert, dann spackt die Kugel nur rum, da er den Wert bei jedem Durchgang, bei dem die Kugel nach unten wandert, auch wieder neu berechnet. Das heisst, sie zittert so herum.

0
Berny96  07.01.2017, 18:43
@Lukomat99

Verstehe.. Du musst die X Positionen deiner Kügelchen in einer Liste/Array speichern und in Draw() alle Kügelchen nach der Liste entsprechend zeichnen. Ich schätze du updatest dann die Y Position immer +1? 

1
Lukomat99 
Beitragsersteller
 07.01.2017, 18:50
@Berny96

Müsste die Liste dann nicht unendlich lang sein ?

Oder speichre ich so 10 Werte und darauf wird dann per Zufall zugefriffen?

Ich update y immer mit 2. Aber ich kann es natürlich auch umstellen, wenn es nötig ist.

0
Berny96  07.01.2017, 19:00
@Lukomat99

Ich würde die Liste am Anfang mit so viele Random Werte füllen wie du auf einmal Tropfen auf dem Bildschirm haben willst. Dafür am besten die Point Klasse verwenden damit du direkt x und y speicherst. Dann in Draw() über die Liste iterieren, den Y-Wert hochzählen, abfragen ob er größer als die Höhe des Bildschirms ist, wenn ja den Punkt entfernen und einen neuen Hinzufügen mit dem Y-Wert 0 und X wieder random, wenn nicht eben einfach den tropfen an der stelle zeichnen. Grob verstanden?

0
Lukomat99 
Beitragsersteller
 07.01.2017, 20:28

Also, eigentlich würde ich gerne eine Kugel nach der anderen hinunterfallen lassen.

Unten steht ein Auffangbecken, welches man mit den Links und Rechts Tasten steuert.
Damit versucht man die Kugeln einzufangen.
Ist da so etwas Kompliziertes nötig?
Ich muss es eben noch der Klasse erklären😂😂😂

0