27.10.2013 Aufrufe

Weitere Projekt-Dokumentation - von Johannes Singler

Weitere Projekt-Dokumentation - von Johannes Singler

Weitere Projekt-Dokumentation - von Johannes Singler

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!