Weitere Projekt-Dokumentation - von Johannes Singler
Weitere Projekt-Dokumentation - von Johannes Singler
Weitere Projekt-Dokumentation - von Johannes Singler
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Abbildung 8: Beispiel für Sandbox. In der Mitte breitet sich gerade eine Lawine aus.<br />
3.4 Simulation <strong>von</strong> Überlauf-Kaskaden mittels des Sandbox-Zellularautomaten<br />
Der Sandbox-Zellularautomat simuliert einen Sandkasten. Jede Zelle kann 0 bis 3 Sandkörner<br />
enthalten. Kommt durch externe Einwirkung oder durch einen Iterationsschritt noch ein viertes<br />
dazu, so ” läuft“die Zelle über, die vier direkten Nachbarn erhalten ein weiteres Sandkorn,<br />
die aktuelle Zelle hat nachher kein Sandkorn mehr. Dieses Überlaufen kann sich in ” kritischen“Situation<br />
fortsetzen und bildet Kaskaden, die erst nach einiger Zeit aussterben. Das<br />
Universum wird mit einer zufälligen Gleichverteilung initialisiert. Der Benutzer kann durch<br />
einen Klick mit der rechten Maustaste einer Zelle ein Sandkorn hinzufügen und diese so zum<br />
Überlaufen bringen. Sandbox ist ein Beispiel für einen Zellularautomaten mit festen Randbedingungen.<br />
Am Rand des ” Sandkasten“laufen sich die Kaskaden spätestens tot.<br />
Um den Folgezustand einer Zelle zu berechnen, muss sie eigentlich den Füllstand der vier direkt<br />
benachbarten Zellen betrachten und für jede einzeln entscheiden, ob diese gerade überläuft<br />
oder nicht. Dies widerspricht allerdings der Forderung, dass der Zellularautomat totalistisch<br />
sein soll. Außerdem würde die gleiche Entscheidung ineffizienterweise gleich viermal getroffen.<br />
Deshalb wird folgendes Verfahren verwendet: Im roten Farbkanal wird die Anzahl der<br />
Sandkörner gespeichert. Der grüne Farbkanal speichert, ob die Zelle in der letzten Iteration<br />
übergelaufen ist (1.0) oder nicht (0.0). Über diese Flags wird <strong>von</strong> jeder Zelle einfach die Summe<br />
gebildet und damit ermittelt, wie viele Sandkörner dazukommen. Am Ende der Berechnung<br />
entscheidet die Zelle für sich, ob sie überläuft. Falls ja, setzt sie die grüne Farbkomponente auf<br />
1.0 und erniedrigt die Zahl der enthaltenen Sandkörner um 4. In der zweiten Ansicht wird der<br />
grüne Anteil herausgefiltert, um für den Benutzer eine reine Darstellung zu gewinnen.<br />
3.4.1 Der Pixel Shader zu Sandbox<br />
//Sandbox.psh<br />
//Pixel shader for doing the logic of the Sandbox<br />
//Declare pixel shader version<br />
ps.2.0<br />
dcl_2d s0 //cell state, point sampling<br />
18