Meine kleine Homepage

FreeBSD, UNIX, Programmierung, Half-Life 2 und anderes ... Sitemap


Allgemeines Kurzbeschreibung History Todos Screenshots Beispielbilder Downloads
Java Programmierung Hauptmenü
Suchen

Java Fractal Generator - Interne Details

Zu den internen Details, bzw. auf was ich Wert gelegt habe. Man sollte dabei beachten, dass dieses Programm nicht geschrieben wurde um möglichst viel Geld zu machen, sondern um diverse Mechanismen der Java Sprache zu testen ....

Das Programm arbeitet mit mehreren Engines. Jede dieser Engine arbeitet quasi selbstständig. Von daher arbeitet jede Engine auch als Thread. Die Kommunikation der einzelnen Threads wird via wait und diversen Status Integern gelöst.

RenderEngine

Die Gruppe der RenderEngines ist verantwortlich fuer die Berechnungen. Da quasi jedes Fraktal seine Schoenheit aus den Iterationen rauszieht, berechnet die RenderEngine auch nur die Iterationen eines Fraktals. Mehr nicht. Die Basisklasse hat bereits schon alle funktionalitaeten, einzig eine Funktion Namens calc muss ueberschrieben werden.

Welche RenderEngines zur Zeit verfuegbar sind, bitte in der History schauen.

ColorEngine

Die Gruppe der ColorEngines holt sich die Iterationsdaten von den RenderEngines ab. Es berechnet auf Grund der Iteration ein entsprechenden Farbwert. Als Resultat bekommt man ein Pixel. Dieser Pixel wird in einem Java Image Object abgelegt.

DisplayEngine

Die DisplayEngine holt sich die Imagedaten aus der ColorEngine ab und stellt die im Fenster dar. Dazu bedient es sich eines JComponent mit ueberschriebener paint Funktion.

Allgemeiner Ablauf

Wenn man nun ein Bild haben will, wird zu erst eine RenderEngine gestartet und zwar als Thread. Danach wird eine ColorEngine erstellt und eine Referenz auf die RenderEngine wird uebergeben. Danach wird auch die ColorEngine in den Hintergrund geworfen. Zum Schluss wird die DisplayEngine mit der Angabe der ColorEngine als Thread gestartet. Erst dann macht sich ein Fenster auf.

Das schoene daran ist, das waehrend der Berechnung man mit der Anwendung arbeiten kann, und das jede einzelne Engine vollkommen austauschbar ist, auch die DisplayEngine.

Design, Text und Fotos (C)opyright 1997 - 2008 by Wolfgang Hurst
Last Modificated : 10.Apr 2004 15:35 CEST