CHAOSultd gem

Version 6.10 15.10.1993

von

Th. Morus Walter

Inhaltsverzeichnis

1 Copyright 1

2 Allgemeines 2 2.1 Möglichkeiten und Grenzen . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2.2 Unterstützte Fraktaltypen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

3 Installation 4 3.1 Hardwarevorraussetzungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 3.2 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 3.3 Lieferumfang . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 3.4 allgemeine Hinweise zum Betrieb . . . . . . . . . . . . . . . . . . . . . . . . 6

4 Danksagung 6

5 Geschichtliches 7 5.1 Entwicklungsstand . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 5.2 Änderungen gegenüber früheren Versionen . . . . . . . . . . . . . . . . . . . 7 5.3 Ausblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 5.4 Updates und Bezugsmöglichkeiten . . . . . . . . . . . . . . . . . . . . . . . 8

6 Fehler (und was man dafür halten könnte) 9 6.1 eliminierte Fehler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 6.2 bekannte Fehler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 6.3 unbekannte Fehler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 6.4 Fehler in der Anleitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

7 zu dieser Anleitung 11

I CHAOSultd gem 13

1 Allgemeine Bedienungshinweise 13 1.1 Booten des Programmes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.2 Dialoge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.3 Fenster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 1.4 Objekte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 1.5 Selektieren von Objekten im Objekt-Fenster . . . . . . . . . . . . . . . . . . 16 1.6 Bedienungselemente zum Aufruf von Funktionen . . . . . . . . . . . . . . . 17 1.7 Online-Hilfe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

2 Bilder erzeugen 20 2.1 neue Bilder – Eingabe der Parameter . . . . . . . . . . . . . . . . . . . . . . 20 2.2 Übernahme von Daten aus bestehenden Objekten . . . . . . . . . . . . . . . 23 2.3 Berechnung von Bildern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 2.4 Neu berechnen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 2.5 extended Neu, Block, . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 3 Bilder verwalten 27

3.1 Bilder konvertieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.2 Bilder packen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3.3 Film edieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3.4 Löschen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

4 Anzeigefunktionen 30 4.1 Bilder anzeigen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 4.2 Bildvergleich . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 4.3 Block zeigen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 4.4 Konstante anzeigen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 4.5 Koordinaten anzeigen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 4.6 neues Objekt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 4.7 Bild-Parameter anzeigen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 4.8 Farben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 4.9 Fraktal-Parameter anzeigen . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 4.10 Info anzeigen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

5 Input/Output 34 5.1 Speichern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 5.2 Laden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 5.3 Drucken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 5.4 Clipboard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

6 Einstellungen 36 6.1 Speicher-Info . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 6.2 Einstellungen I . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 6.3 Einstellungen II . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 6.4 Parameter-Voreinstellungen . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 6.5 Parameter speichern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

II die Fractal-Routinen 38

1 der Algorithmus 38

2 Parameter 39 2.1 benötigte Parameter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 2.2 Eingabe der Parameter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 2.3 3d Fractale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 2.4 freie Fractale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

3 unterstützte Optionen 44 3.1 Parameter anzeigen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 3.2 Bild-Info anzeigen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 3.3 Punktinfo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 3.4 Block/Konstante zeigen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 3.5 neu berechnen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 INHALTSVERZEICHNIS iii

III die Hüpfer-Routinen 46

1 der Algorithmus 46 2 Parameter 46 3 unterstützte Routinen 47

IV die Feigenbaum-Routinen 48

1 Algorithmus 48 2 Parameter 48 3 unterstützte Routinen 48

V die XCHAOS-Routinen, Barnsley und Attraktoren 49

1 Barnsley-Fractale 50 2 seltsame Attraktoren 51

1 Copyright

CHAOSultd gem V6.10 1993 by Never Ready Software, Th. Morus Walter Th. Morus Walter Schulstr. 22 W-8401 Pentling (Federal Republic of Germany) Tel. 0941 949802 Dieses Programm ist Postcardware! Das Programm darf und soll frei kopiert und weitergegeben werden, wobei aber alle in Abschnitt 3.3 genannten Dateien kopiert werden müssen – bzw. die diese Dateien enthaltenden Archive. Komerzielle Nutzung ist ausgeschlossen, mit Ausnahme der für den Vertrieb von PD-Disketten üblichen Kopiergebüren. Die Aufnahme in eine Public-Domain Disketten-Serie bedarf der Zustimmung des Autors. Die Aufnahme des Programmes in Internet-Fileserver oder in Mailboxen ist erlaubt und erwünscht, vorausgesetzt für das Abrufen des Programmes wird keine Gebür verlangt. Wem das Programm gefällt, und wer es nutzt, ist verpflichtet, mir – dem Autor – eine Ansichtskarte als kleines Dankeschön zu schicken. So erfahre ich ein bißchen was über die User meines Programmes (womöglich gibt es gar keine) und habe etwas (hoffentliche positive) Resonanz, die Rückseite der Postkarte läßt sich ja für Anregungen und konstruktive Kritik (andere wird überlesen) nutzen (ich bitte allerdings um Verständnis, daß ich schriftliche Fragen nur bei frankiertem Rückumschlag beantworten kann). Ich denke, eine solche Postkarte ist nicht zu viel verlangt, für ein Programm wie CHAOSultd gem.

Hinweis

Die Benutzung des Programmes geschieht auf eigene Gefahr. Der Autor garantiert weder für irgendwelche Schäden (am Rechner oder auch am Benutzer) noch für die korrekte Funktionsweise des Programmes. Insbesondere wird auch nicht garantiert, daß den erzeugten Bildern wirklich die beschriebenen Algorithmen zugrundeliegen, wenngleich ich natürlich davon ausgehe.

noch ein Hinweis

Wider die neue (und alte) Rechte! Nie wieder Krieg! Nie wieder Faschismus!

2 Allgemeines

CHAOSultd gem V6.10 ist eine Weiterentwicklung von CHAOSultd gem V6.01, das wiederum eine Weiterentwicklung von CHAOSultd V5.0 ist. CHAOSultd gem ist, wie das Suffix gem schon andeutet, konsequent GEM-konform programmiert (von Programmfehlern abgesehen). Das Programm sollte deshalb in jeder Auflösung und auf jeder Graphikkarte laufen. Zur Ausgabe wird ausschließlich das VDI verwendet. Trotz der Tatsache, daß die GEM-Konformität immer noch wenigstens zwei Nachteile gegenüber der Version 5.0 mit sich bringt und daß der Funktionsumfang hinsichtlich der fehlenden Hardcopy-Routine immer noch gegenüber Version 5.0 zurückbleibt, erkläre ich CHAOSultd gem V6.10 hiermit (anders als noch V6.00 und V6.01) zum Nachfolger der Versionen V5.0x, die ich nicht mehr weiterentwickeln werde. Die Nachteile sind zum einen, die geringere Anzeigegeschwindigkeit, ein Effekt, der sich in Grenzen halten dürfte (nachgemessen hab ich’s nicht) und (schlimmer) die Unmöglichkeit der Darstellung in ST-low durch Umschalten der Auflösung. Letzteres ist schon bitter, auf der anderen Seite arbeite ich eh meist nur in monochromer Auflösung.

2.1 Möglichkeiten und Grenzen

Abgesehen von der endlichen Rechengeschwindigkeit und dem endlichen Speicher ist CHAOSultd gem ist praktisch grenzenlos (deshalb auch das ultd, das für unlimited steht, im Namen). D.h. praktisch alle im normalen Betrieb auftretenden Einschränkungen sind durch Rechengeschwindigkeit und Speichergröße bedingt. Daneben gibt es die folgenden programmbedingten Einschränkungen:

• maximal 9999 Objekte gleichzeitig im Speicher

• Bildgrößen von 64-32000 x 40-32000 Pixel

im einzelnen:

– minimale Bildbreite: 64 Pixel

– minimale Bildhöhe: 40 Pixel

– maximale Bildbreite und -höhe: 32000 Pixel

– die Bildbreite muß durch 16, die Bildhöhe durch 4 teilbar sein

• 1-8 Bildebenen, d.h. 2-256 Farben; bei einer Bildebene (mono- bzw. genauer duochrom) sind noch 2x2 und 4x4 Raster möglich

das ist eine echte Einschränkung: keine Unterstützung von High-/True-Color (bei den meisten Bildtypen ist das aber auch nicht sinnvoll)

• maximal 32767 Bilder pro Film

Anmerkungen: nicht alle Bilderzeugungsroutinen unterstützen alle Bildformate, insbesondere gibt es Routinen, die nur 2 Farben (und auch keine Raster) zulassen die theoretisch mögliche Bildgröße von 32000x32000 Pixeln bei 256 Farben (8 Bildebenen) hat einen Speicherplatzbedarf von 976.5625 Megabyte (also ca. 1 Gbyte). Zwar kann das Bild für die Bildverwaltung gepackt werden, um es zu berechnen oder anzuzeigen muß die Bitmap aber entpackt vorliegen. Ich möchte auch nicht wissen, wie lange es dauern würde ein solches Bild mit ca. 10^{9} Punkten zu berechnen. Noch eine weitere Anmerkung zur Speicherverwaltung: CHAOSultd gem verwendet an einigen Stellen in Zeigern -1l als Flag. Damit dürften sich Schwierigkeiten bei Verwendung von Speicher oberhalb von 2^{31} = 2 GigaByte ergeben, insbesondere kann man^{1} wohl nicht mehr als 2 GigaByte Speicher nutzen. Ich betrachte diese Einschränkung allerdings als ausgesprochen theoretisch (um 1 GigaByte Speicher auch nur zu löschen – wenn einer tatsächlich soviel Speicher bezahlen kann – braucht eine 8 Mhz 68000 CPU (mit sowas arbeite ich immer noch) ca. 1000 Sekunden (1 Sekunde pro Megabyte habe ich mal abgeschätzt, auch wenn es wohl sicher noch schneller geht) also eine viertel Stunde).

2.2 Unterstützte Fraktaltypen

CHAOSultd gem ist modular aufgebaut – analog zu CHAOSultd V5.0, nur konsequenter, es gibt keine internen Berechnungsroutinen mehr. Das Programm besteht aus einem Hauptteil, der die Verwaltung der Bilder, das Anzeigen, Abspeichern etc. übernimmt, und mehreren Modulen, die Routinen zur Berechnung von Fraktalen bestimmter Typen zur Verfügung stellen. Derzeit existieren Module für die folgenden Bildtypen:

• Fractale

Unter Fractalen im engeren Sinn verstehe ich hier Mandelbrot-, Julia- und Pickover-Mengen, letztere mit frei definierbarer Berechnungsformel^{2}.

Mandelbrot- und Julia-Mengen können auch in Pseudo 3d dargestellt werden.

Das Modul Fractale umfaßt also genau die Bildtypen, die es schon in Fractal 4.3 (als einzige) und dann genauso in CHAOSultd V5.0 gegeben hat.

• Hüpfer (nach Barry Martin)

• Feigenbaum-Diagramme

• XCHAOS

XCHAOS ist ein Modul, das verschiedenen Berechungsroutinen gemeinsame Funktionen zur Parametereingabe etc. zur Verfügung stellt. Bei der Realisation einer solchen Berechungsroutine wird dann praktisch nur noch angegeben, welche Parameter gebraucht werden. Das reduziert das Schreiben neuer Routinen im wesentlichen auf die eigentliche Zeichenroutine, so daß ich weniger zu tun habe.

1wer will, kann sich jeder Stelle, an der ,man’ steht, ,frau’ (dazu) denken; der Verzicht auf diese Formen (ebenso wie auf den studentischen Plural (wieso eigentlich studentisch, müßte das nicht studentInisch oder studierendenisch heißen, konsequenterweise) ist nicht Ausdruck der Geringschätzung dieser Problematik, auch wenn es jetzt vielleicht so klingt, und der Autor zugibt nicht immer in der Lage zu sein, die Problematik so ernst zu nehmen, wie es viele andere tun; der Verzicht ist vielmehr Ausdruck der Tatsache, daß der Autor diese Formen nicht von Anfang an berücksichtigt hat und der Bequemlichkeit des Autors, die ihn daran hindert, jetzt nochmal alles daraufhin durchzusehen und zu ändern; der Autor wendet sich im Übrigen gegen die Einführung von ,ders’ als männlichen Artikel Plural (statt ,die Männer’ würde es dann ,ders Männer’ heißen)

2ich unterscheide in dieser Anleitung zwischen Fraktalen, als Oberbegriff für alle berechneten Bilder (selbst wenn sie gar nicht fraktal sind), und Fractalen im genannten engeren Sinn

Unter XCHAOS gibt es zur Zeit:

– Barnsley-Fraktale

– seltsame Attraktoren (Lorenz, Rössler, etc.)

• Iterierte Funktionen-Systeme, linear und nichtlinear

Die Iterierten Funktionen-System sind bisher undokumentiert! Und zwar nicht, weil sie trivial zu bedienen sind, sondern weil ich nicht mehr mag (sorry). Wer weiß, was IFS sind (siehe z.B. einen recht guten Artikel in der ST-Computer (11/91) und seiner Intuition folgt, hat sicherlich gute Chancen, die Routinen zu verstehen, sie folgen gleichen Konzepten wie die anderen Routinen auch. Einziger weiterer Hinweis: bei den Kopierern (linear/nichtlinear) muß man nach dem Parameterdialog ein Bild-Objekt auswählen, das als Startbild verwendet wird. Man hüte sich ansonsten vor Speichermangel (da kann ich für nichts garantieren).

Sogesehen sind die IFS-Routinen bislang freak-only!

(Bitte keine Anfragen zu diesem Thema, ich schreibe die Anleitung schon noch irgendwann, und dann kann man weitersehen. Ich glaube es ist trotz dieses Anleitungsmangels nicht ganz unsinnig, die Routinen mitzugeben.)

3 Installation

3.1 Hardwarevorraussetzungen

CHAOSultd gem wurde auf einem Atari 520 ST^{+} mit TOS1.4, 4 MByte Speicher und einer 85 MByte Festplatte entwickelt und getestet. Das Programm sollte auf allen Atari ST, STE, TT, Falcon und Eagle Rechnern laufen – mangels Hardware wurde das Programm aber nur auf der oben genannten Konfiguration getestet. CHAOSultd gem sollte mit jeder Auflösung und Graphikkarte zusammenarbeiten, solange ein VDI-Treiber existiert. Mindestauflösung sind allerdings 640x200 Punkte, wobei sich bei 640x200 Punkten (ST-Mid) ein paar kleinere Unschönheiten ergeben (siehe Fehler, 6.2). Auf der Festplatte werden etwa vier- bis fünfhundert Kilobyte Platz benötigt und zwar für das Programm an sich. Prinzipiell kann man das Programm also auch ohne Festplatte auf Diskette verwenden. Die Datenmenge berechneter Bilder ist nach oben offen. Speicher braucht das Programm natürlich auch, unter 1 MByte dürfte wenig gehen. CHAOSultd gem belegt – abhängig von der Zahl der Module die man lädt – ca. 250-450 kByte Speicher für Programm, Resourcedateien etc.. Dazu kommt noch der Speicherbedarf für die Bilder. Minimum einige hundert Kilobyte, nach oben offen. Ein Drucker gleich welcher Art wird (noch) nicht unterstützt.

3.2 Installation

Bei CHAOSultd gem von ,Installieren’ zu reden ist eigentlich eine Übertreibung^{3}. Das Schlimmste hat man schon hinter sich, wenn man in der Lage ist, diesen Text zu lesen, nämlich das Auspacken der Archive. Hat man dies geschafft, kann man entweder CHAOS.APP gleich starten, oder aber – wenn einem der Platz, an dem das Programm jetzt steht, nicht gefällt – man kopiert das Programm CHAOS.APP in ein beliebiges Verzeichnis auf der Festplatte (oder auf eine Diskette, was aber natürlich weniger empfehlenswert ist) und den Ordner CHS ULTD.GEM in das gleiche Verzeichnis. Vielleicht noch kurz ein Wort zur Erklärung. Der Ordner CHS ULTD.GEM enthält die Resource-Dateien, die Einstellungsdatei und die externen Module. Letztere besitzen die Dateikennung (Extension) .XCH, was natürlich für eXdended CHaos steht. Möchte man nicht alle externen Module verwenden, was ja auch Speicher kostet, so kann man die entsprechenden Module ohne weiteres löschen (nebst zugehöriger Resourcedatei; man sollte natürlich noch irgendwo eine vollständige Kopie haben) oder durch Ändern der Dateikennung deaktivieren. Die richtige Zuordnung zwischen den Modulen und den zugehörigen Dateinamen wird dem geneigten Leser als Übungsaufgabe überlassen. Außerdem befinden sich im Ordner HELP die Hilfs-Texte für das Hilfs-System.

3.3 Lieferumfang

CHAOSultd gem V6.10 umfasst die folgenden Dateien und Ordner (nach vollständigem Entpacken aller Archive, siehe README.TXT):

 CHS ULTD.APP  das Programm

 READ ME.TXT
 CHS ULTD.GEM\

CHS ULTD.RSC die Resourcedatei
CHS ULTD.SET die Einstellungen

und diverse Module

   FRACTAL.XCH
   HUEPFER.XCH
   FEIGENBM.XCH
   XCHAOS.XCH
   IFS.XCH

sowie deren Resourcen

   FRACTAL.RSC
   HUEPFER.RSC
   FEIGENBM.RSC
   XCHAOS.RSC
   IFS.RSC

3auf PCs ist das Installieren von Programmen ein beliebtes Unterhaltungsspiel für DiskJockeys nach dem Motto, sie haben ein Dutzend Disketten und schieben die in bestimmter Reihenfolge in das Laufwerk; bei größeren Programmen hat man dann wieder nur eine Scheibe, dafür aber ein CD-Rom, dessen Inhalt die Festplatte auch problemlos (über)füllen kann

   HELP\

*.HLP  die Hilfstexte

 ANLEITNG\

CHS ULTD.DVI, -.TXT, -.PS die Anleitung im TEX , ASCII und Postscript-Format
BEISPIEL\  Ordner mit Beispielen (unberechnet)

   *.CHS

3.4 allgemeine Hinweise zum Betrieb

Es ist wenig ratsam, CHAOSultd gem auf einem 8Mhz ST ohne Bildschirmbeschleuniger einzusetzen. (Es ist überhaupt wenig ratsam, einen ST ohne Bildschirmbeschleuniger zu betreiben.) Wer es doch tut ist selber schuld und muß eben geduldig sein. Ich selbst verwende NVDI, und mußte (leider) CHAOSultd speziell daran anpassen, da NVDI offenbar das Arbeiten mit Bitmaps, die mehr Bildebenen besitzen als der Bildschirm, nicht mag. Man sollte darüberhinaus stets sicherstellen, daß dem System noch Speicher übrigbleibt (kann man in den Einstellungen eintragen), da die Dialogboxen dann den Bildschirmhintergrund sichern können und dieser nach Verlassen der Dialogbox nicht neu gezeichnet werden muß. Wenn man sehr große Bilder (z.B. 3200x2000 Punkte in 2 Farben) erzeugt, dann kann schon das bloße Anzeigen von Bildern mehrere Sekunden vom Aufrufen der Funktion bis zum Öffnen des Fensters (oder Umschalten des Bildschirms) dauern. Schließlich muß das Bild erst entpackt werden etc. CHAOSultd gem zeigt diese Operationen gegenwärtig durch nichts an (auch nicht durch den Mauszeiger), man wundere sich also nicht, wenn auf eine Aktion in einem solchen Fall erst mal nichts passiert. Es ist sogesehen in jedem Fall ratsam, erstmal kleinere Bilder zu erzeugen und dann (eventuell) schrittweise zu großen Bildern überzugehen. Dabei sollte man stets bedenken, daß der Speicherbedarf und (meist) auch der Rechenaufwand mit der Fläche des Bildes (mal Farbtiefe) und nicht mit der Seitenlänge geht (d.h. ein Bild der Größe 1280x800 ist viermal so groß wie 640x400 und nicht nur doppelt) – eigentlich trivial, aber man macht sich das oft nicht klar.

4 Danksagung

CHAOSultd gem V6.10 wurde im wesentlichen mit Hilfe folgender Programme entwickelt:

• Pure C 1.0, PureDebugger

• PASM Assembler

• Interface Resource Construction Set

• Tempus Editor

• Gemini (als Grundlage für alles andere)

• Lindner-TEX (für diese Anleitung)

CHAOSultd gem verwendet MyDials von Olaf Meisiek (Interface) mit dem NKCC Tastaturhandler von Harald Siegmund.

besonderen Dank an

• Michael G.

für die Fließkommaroutinen der freidefinierten Fractale und einige (in früheren Versionen) gefundene Fehler

5 Geschichtliches

Nein, die lange Laberei über die Vorgeschichte kommt jetzt nicht. Wer sie noch nicht kennt und unbedingt lesen will, sei auf die Anleitung zur Version 5.0 verwiesen (Abschnitt 5.1), aber es lohnt sich eigentlich nicht.

5.1 Entwicklungsstand

CHAOSultd gem ist nicht fertig! Im Gegensatz zur Version 6.0x sind inzwischen allerdings die meisten und dringendsten Verbesserungen realisiert, obwohl ich eigentlich gar nicht so viel Zeit gehabt hätte, wie ich mir genommen habe. Einige Funktionen, die geplant sind, aber immer noch fehlen

• Hardcopy

CHAOSultd gem verfügt über keinerlei Hardcopy-Routine. Logischerweise auch keine Druckereinstellung. Eine Hardcopy-Routine für 24-Nadel-Matrixdrucker dürfte aber schon irgendwann mal (wenn mein Drucker repariert ist und ich gleichzeitig Zeit und Lust habe) entstehen – als externes Modul, so daß man dann auch Hardcopy-Routinen für andere Drucker schreiben kann^{4}

• Anzeige-Bilder konvertieren

eine Konvertieren-Routine existiert mittlerweile, man kann damit aber nur Bild-Objekte konvertieren. Sollte ich es schaffen die Konvertierungs-Routinen zu optimieren, so daß sie einigermaßen flott arbeiten, dann soll es sie später auch für angezeigte Bilder (in der Anzeige) geben.

• Neu berechnen für IFS-Fraktale (naja, ob ich mir das jemals antue …)

• ettliche kleinere (zum Teil auch nur interne) Verbesserungen

Und dann gibt es noch eine riesige Anzahl von Bildtypen, für die man Berechnungsroutinen schreiben könnte.

5.2 Änderungen gegenüber früheren Versionen

siehe hierzu die Datei CHANGES.TXT

4wenn mir irgendwer einen guten Laserdrucker oder einen guten Farb-Tintenstrahl-Drucker schenkt, dann gelobe ich dafür eine Hardcopy-Routine zu schreiben (es darf auch ein Farb-Laser sein)

5.3 Ausblick

Wie schon gesagt, ist CHAOSultd gem V6.10 alles andere als fertig, die Entwicklung geht also weiter. Ideen, was alles nützlich sein könnte habe ich jede Menge, Vorstellungen wie man diese Ideen realisieren könnte schon weniger. Am wenigsten habe ich Zeit, zumal ich mit eigentlich mit Quarks, Mesonen und Baryonen im NJL-Modell befassen sollte, um endlich Diplom-Physiker zu werden. Sollte irgendwer daran interessiert sein, an CHAOSultd V6.x mitzuwirken, so ist er (oder sie) herzlich eingeladen. Am einfachsten ist natürlich die Entwicklung neuer Berechnungsroutinen, da man hier eine definierte Schnittstelle hat (jedenfalls könnte ich sie definieren)^{5}. Aber auch eine Übertragung des Progammes in eine andere Sprache wäre denkbar, die Text-Strings des Hauptprogrammes sind bereits weitgehend in eine eigene Datei ausgelagert – bei den Berechnungsroutinen muß ich dies noch machen, aber das ist kein prinzipielles Problem – der Rest der Texte (eigentlich der Hauptteil) steht wie es sich gehört in der Resource-Datei. Hier stellt man natürlich gleich fest, so einfach ist es auch wieder nicht, Programmieren und zwar in C sollte man schon können. Außerdem sollte man über Pure C (andere C Compiler setzen noch mehr Programmiererfahrung voraus, weil man dann die Kompatibilität testen muß und die ist schlecht, weil Pure C Parameter in Registern übergibt) und Interface (RCS) verfügen. Sind diese Vorraussetzungen gegeben, ist das Angebot ernst gemeint. Nach der überragenden Resonanz auf CHAOSultd V5.0 (zwei Anrufer, die mit dem selbstenpackenden Archiv nicht zurechtkamen) habe ich allerdings kaum noch Illusionen und deshalb wie gesagt erst mal darauf verzichtet die Schnittstelle auszuarbeiten und zu dokumentieren. Sollte jemand tatsächlich Probleme haben, interessante neue Fraktal-Typen für CHAOSultd zu finden, dann sollte er – (pardon) sie – sich mal FractInt anschauen, ein PC (leider) Programm, das jede Menge Fraktal-Typen bietet.

5.4 Updates und Bezugsmöglichkeiten

Updates wird es also sicher geben – irgendwann. Ich sehe mich außerstande, selbst Updates zu vertreiben, auch nicht gegen Leerdiskette und frankierten Rückumschlag, ich habe schon genug zu tun – sorry. Wie also kommt man eventuelle neue Versionen von CHAOSultd. Erste Möglichkeit sind PD-Versender, ich gehe davon aus, daß CHAOSultd gem wie CHAOSultd V5.0 Aufnahme in die ST-Computer PD-Sammlung findet, und werde dort auch Updates abliefern. Günstiger ist die zweite von mir selbst unterstützte Möglichkeit, CHAOSultd gem und kommende Updates via Internet zu beziehen. Günstiger, weil es nichts kostet und weil Updates dort im allgemeinen schneller verfügbar sein werden. Internet ist ein Internationales Netzwerk, an das bespielsweise die Universitäten angeschlossen sind, und in dem unter anderem FTP (File-Transfer-Protocoll) - Server existieren, von denen man PD-Software beziehen kann. Ich selbst werde CHAOSultd gem wie auch Updates auf den Servern der Uni Stuttgart (ftp.uni-stuttgart.de) und der TU Clausthal (ftp.tu-clausthal.de) deponieren.^{6} In Stuttgart findet man das Programm (bisher) im Verzeichnis SOFT/ATARI/APPLICATIONS/MATH in Clausthal in /PUB/ATARI/GRAPHICS/FRACTALS. Als dritte Möglichkeit böte sich die Verteilung via Mailboxen (z.B. Maus-Netz) an, da ich aber kein Modem besitze, kann ich hier nur dazu auffordern, daß irgendwer (oder die Betreiber der Boxen) das Programm dort ablegt.

5im Moment ist die Schnittstelle noch nicht definiert, und sollte vor einer Definition auch noch mal überarbeitet werden (solang nur ich daran rumpfusche scheint mir das nicht so wichtig). Da mir nicht bekannt ist, daß irgendwer außer mir die Schnittstelle der Version 5.0 für CHAOSultd-Module verwendet hat, spare ich mir diese Definition erstmal. Sollte es aber ernsthafte Interessenten geben, so läßt sich dieser Schritt allemal nachholen.

6Die beiden Server habe ich ausgewählt, weil Stuttgart eine der schnellsten Verbindungen nach Regens-

6 Fehler (und was man dafür halten könnte)

”Programme laufen nicht“ lautet bekanntlich eine mögliche Formulierung von Murphy’s Gesetz für Programmierer. Nun am Ende der Programm-Entwicklung hat man es meist geschafft, diesen Satz im konkreten Einzelfall zu widerlegen (oder man hat kein Programm und braucht keine Anleitung zu schreiben) – jedenfalls mehr oder weniger. So ist es auch hier. Andererseits gibt es eine weitere, schwächere Folgerung aus Murphy’s Gesetz die besagt, daß jedes nicht-triviale Programm mindestens einen Fehler enthält. Mit an Sicherheit grenzender Wahrscheinlichkeit trifft dies auch hier zu. Bevor Sie jetzt entsetzt das Programm wegwerfen, sollten Sie sich überlegen, daß Sie das dann konsequenterweise mit allen anderen Programmen (einschließlich des Betriebssystems) auch tun müßten. Ich habe CHAOSultd soweit möglich getestet^{7} und es läuft. Das Programm ist soweit möglich fehlertolerant, sollte also auch bei Fehlbedienung nicht gleich schlappmachen^{8}.

6.1 eliminierte Fehler

siehe hierzu ebenfalls die Datei CHANGES.TXT

6.2 bekannte Fehler

Einige kleinere Macken, die ich jetzt nicht mehr behebe, sind mir in V6.10 schon bekannt:

• Startet man CHAOSultd in mittlerer-ST-Auflösung (bzw. irgendeiner Auflösung die einen 8x8-Font verwendet), so gibt es drei kleinere Probleme mit den Dialogboxen.

Das kleinste liegt im Programminfo, die erste Dialogbox, in der Bit-Image-Objekte angezeigt werden gerät etwas durcheinander. Aber die dient eh nur meiner Angeberei und ist nicht so wichtig.

Die beiden anderen Probleme befinden sich bei der Anzeige der Farbcodierung von Fractalen (in der Haupteingabe-Dialogbox für Fractalparameter) und in der Anzeige der Trafos linearer IFS in der Haupteingabe-Dialogbox für IFS-Parameter (linear). In beiden Fällen werden die Informationen nicht korrekt angezeigt, entweder überdecken sich die Zeilen partiell oder einzelne Zeilen werden ganz verdeckt. Es ist leider nicht so viel Platz in den beiden Dialogen vorhanden, um dieses Problem zu beseitigen. (Die Daten werden aber korrekt verwaltet und können bei Aufruf der Unter-Dialoge für ihre Eingabe gesichtet werden.)

burg hat, und weil Clausthal das – soweit mir bekannt – bestorganisierte PD-Angebot für Atari hat, sowohl was den Umfang betrifft, vor allem aber wegen der Kommentierung der Programme – an dieser Stelle herzlichen Dank an die Betreuer der beiden Server Stefan Haake (Stuttgart) und Wolfgang Ley (Clausthal).

7naja man sollte das nicht zu wörtlich nehmen, die weiteren Tests können ja jetzt Sie übernehmen

8allerdings ist es bei Parametern von Berechnungsroutinen teilweise möglich ist, unsinnige Angaben zu machen, die nicht von der Eingaberoutine zurückgewiesen werden, dadurch aber auch nicht sinnvoll werden

• Schneidet man Blöcke aus Bildern aus, so hat man die Möglichkeit, das Markieren des Blockes mit oder ohne Shift zu starten (durch Mausklick). Mit Shift kann man den Block mit beliebigem Verhältnis Höhe zu Breite definieren, ohne Shift ist das Verhältnis fest und entspricht dem Verhältnis der Bildhöhe zur Bildbreite. Dies soll eigentlich dazu dienen, Blöcke unverzerrt auszuschneiden. Unverzerrt bleiben die Blöcke aber nur, wenn das neue Bild das gleiche Höhen/Breiten-Verhältnis aufweist wie das, aus dem man den Block ausschneidet. Andernfalls führt diese Methode genau zu den Verzerrungen die doch eigentlich vermieden werden sollten.

Ansonsten enthält auch CHAOSultd gem V6.10 den schon in V5.0 bekannten Fehler bei den frei-definierten Fractalen (obwohl das jetzt eigentlich kein Fehler in CHAOSultd sondern einer in einer der Berechnungsroutinen ist): Berechnet man freie Fractale und verwendet in der Abbruchbedingung die ’xor’- Verknüpfung, so erhält man (total) unterschiedliche Ergebnisse, je nachdem ob man mit der schnellen oder der exakten Berechnung arbeitet. This is not a feature, this is a bug! Das Ganze hat vermutlich folgenden Hintergrund: die Routinen zur Berechnung freier Fractale ignorieren Fließkommafehler jeglicher Art, insbesondere auch Überläufe^{9}. Verwendet man nun die ’xor’-Verknüpfung, so wird die Berechnung nicht abgebrochen, falls beide Bedingungen erfüllt sind^{10}, so daß es leicht zu einem Überlauf kommen kann (das kann man sich im Debugger auch anschauen). Anscheinend reagieren die beiden verschiedenen Fließkomma-Routinen nun bei und nach dem Überlauf anders, so daß sich verschiedene Resultate ergeben. Dabei ist das Ergebnis der schnellen Berechnungsroutine dasjenige, das (logischen Überlegungen folgend, d.h. vielleicht) richtiger ist – richtiger insofern, als hier trotz der Fließkomma-Überläufe die Punkte als unendlich tief erscheinen.

6.3 unbekannte Fehler

gibt es nach obigen allgemeinen Überlegungen sicherlich jede Menge. Ich hoffe, es treten wenigstens keine schwerwiegenden Fehler mehr auf. Kommt es bei der Benutzung von CHAOSultd zu irgendwelchen kritischen Situationen so empfehle ich die Bemerkung in der rechten oberen Bildschirmecke zu beherzigen. Sie wurde unter anderem zu diesem Zweck dort installiert^{11}. Sollten Sie einen Fehler finden, so dürfen Sie ihn zunächst einmal behalten. Sollte der Fehler reproduzierbar sein, so wäre ich darüberhinaus für eine ausführliche Beschreibung des Fehlers und seiner Erzeugung dankbar (behalten müssen Sie ihn natürlich trotzdem erst mal, es besteht dann aber eine Chance, daß ich ihn eliminiere).

9als ich die Routinen geschrieben habe, bin ich davon ausgegangen, daß keine Fließkommafehler auftreten; eine aufwendige Behandlung der Fließkommafehler schien also überflüssig und würde nur Zeit kosten (beim Entwickeln der Routine wie beim Berechnen der Bilder); sie jetzt einzufügen ist mir im Moment zu viel Arbeit

10wenn man an dieser Stelle über den Sinn der Abbruchbedingung nachdenkt wird einem natürlich klar, daß ’xor’ hier a priori nicht besonders sinnvoll ist, aber der Vollständigkeit gehört es halt auch dazu

11darüberhinaus soll diese Bemerkung natürlich zur Verbreitung von CHAOSultd beitragen, D. Adams zufolge ist sie dazu bestens geeignet

6.4 Fehler in der Anleitung

Die Anleitung soll das Programm beschreiben. Tut sie das an irgendeiner Stelle nicht, so irrt die Anleitung und nicht das Programm^{12}.

Für Druk-Feeler in Anleitung gilt die Devise: This is not a bug, this is a feature. Druckfehler in der Anleitung dienen der Auflockerung des Textes und sollen insbesondere denen, die sonst nichts verstehen, Gelegenheit zu Erfolgserlebnissen geben, wenn sie welche finden. Insbesondere fehlen wahrscheinlich jede Menge Kommata. Wiederholungen in der Anleitung mögen den einen oder anderen aufmerksamen Leser (gibt’s solche etwa) verwundern, sie entstanden einfach, weil ich die Anleitung nicht von vorn bis hinten geschrieben habe, und man eigentlich alles überall und auf einmal erklären müßte.

7 zu dieser Anleitung

Real programmers don’t read manuals heißt es, und ich mache das häufig genauso. Dennoch möchte ich an dieser Stelle (was jetzt erst, nach so vielen Seiten) jedem die Lektüre der Anleitung nahelegen (auch wenn sie recht lang geworden ist). Man sollte sie wenigstens mal überflogen haben, da das Programm zwar mehr oder weniger konsequent in GEM eingebunden ist, viele der Möglichkeiten und Details des Programmes aber nicht sofort ersichtlich sind. Die Anleitung entstand unter Verwendung von Teilen der Anleitung von CHAOSultd V5.0, teilweise wörtlich wie etwa der letzte oder der folgende Absatz. Wer CHAOSultd V5.0 kennt, kann die Anleitung sicherlich sehr viel schneller lesen, sollte die Anleitung aber trotzdem durchsehen. Der letzte Teil der Anleitung – Dateiformate und Schnittstelle für die externen Routinen – fehlt, siehe Abschnitt 5.3. Die Anleitung ist – entsprechend der Modularität des Programmes – in mehrere Abschnitte aufgeteilt. Im ersten Abschnitt wird lediglich die allgemeine Benutzung des Verwaltungsteiles, im wesentlichen ohne konkreten Bezug auf irgendwelche Berechnungsroutinen, beschrieben. Die Beschreibung der Berechnungsroutinen für Fractale, Hüpfer, Feigenbaumdiagramme etc. folgt dann in den weiteren Abschnitten. Bei der Beschreibung von CHAOSultd gehe ich im folgenden in etwa in der Reihenfolge vor, wie man sie auch bei der Benutzung des Programmes gebraucht. Da keine konkreten Bilderzeugungsroutinen beschrieben werden, sollte man eventuell parallel entsprechende Abschnitte der folgenden Teile lesen, wobei die Fractal-Routinen wohl am ausführlichsten beschrieben sind. Bei den anderen Routinen wird ihre Kenntnis teilweise vorausgesetzt. Auch ist es natürlich sinnvoll, die diversen Möglichkeiten gleich auszuprobieren; möglicherweise wird erst an Hand des Programmes selbst, klar, wie die eine oder andere Bemerkung in der Anleitung gemeint ist (sorry, aber noch ausführlicher kann ich das Programm wirklich nicht beschreiben).

Wird in der Anleitung auf Menüeinträge oder Texte von Button verwiesen, so sind diese in Sans Serif gesetzt. Tasten erscheinen in Typewriter, auch Dateien werden hervorgehoben. (Leser der ASCII-Version dieser Anleitung haben davon leider garnichts.)

12an sich wäre es ja umgekehrt auch ganz nett, aber das Risiko ist mir zu groß; die Anleitung anzupassen ist in jedem Fall das kleinere Übel

Die zugrundeliegenden Algorithmen und die sich daraus ergebenden Formen werden nur ansatzweise beschrieben. Ich möchte deshalb hier auf die einschlägige Literatur verweisen: die meisten Anregungen habe ich den Sonderheften Computerkurzweil I-IV der Zeitschrift Spektrum der Wissenschaft entnommen. Sie sind zwar soweit ich weiß einzeln nicht mehr erhältlich, dafür gemeinsam in Buchform. Dort finden sich auch weitere Literaturangaben. In einem Artikel in der ST-Computer (11/91) über Iterierte Funktionensysteme wird unter anderem noch auf die folgenden beiden Werke verwiesen: H.-O. Pleitgen, D. Saupe (Hrsg), The Science of Fractal Images, Springer Verlag 1988 Benoit B. Mandelbrot, Die fractale Geometrie der Natur, Birkhäuser 1987

Teil I

CHAOSultd gem

1 Allgemeine Bedienungshinweise

1.1 Booten des Programmes

Wird CHAOSultd gem gestartet^{13}, so wird zunächst die (Haupt-)Resource-Datei geladen, dann die Routinen; diese werden initialisiert, wobei sie ihre eigenen Resource-Dateien laden. Schließlich werden noch die Voreinstellungen geladen, die Menüleiste angezeigt und das Objekt-Fenster geöffnet. Während des Ladens der Module wird eine Dialogbox angzeigt, in der dargestellt wird, welches Modul gerade geladen wird und welche Fraktal-Typen zur Verfügung gestellt werden. Scheitert die Initialisierung einer Routine, so wird diese gesperrt, was in der Dialogbox durch helle Schrift angezeigt wird; solche Routinen lassen sich nicht aufrufen.

1.2 Dialoge

CHAOSultd verwendet FlyDial analoge MyDials (von Olaf Meisiek (Interface) mit dem NK-CC Tastaturhandler von Harald Siegmund), die gegenüber herkömlichen GEM-Dialoge ettliche Vorteile bieten. Auch wenn solche Dialogboxen mittlerweile recht bekannt sein dürften – sie finden schließlich immer öfter Verwendung – sollen diese hier nochmals kurz erläutert werden (ohne Anspruch auf Vollständigkeit). ‘Fliegen’ können die Dialoge durch das Eselsohr rechts oben (nur wenn der Speicher zum Sichern des Hintergrundes gereicht hat, sonst fehlt das Eselsohr). Klickt man es an, so kann man den Dialog auf dem Bildschirm verschieben. Dies lohnt sich vor allem auf Großbildschirmen, oder (gelegentlich) wenn der Dialog etwas verdeckt (wobei dann aber meist kein Platz ist, den Dialog weit genug wegzuschieben). Man kann einstellen, ob Dialoge jedesmal beim Aufrufen zentriert werden sollen oder ob sie an der alten Stelle erscheinen sollen (vgl. 6.2). Des weiteren sind MyDials weitgehend tastaturbedienbar. Button kann man anwählen, indem man den in ihnen unterstrichenen Buchstaben zusammen mit der Alternate-Taste drückt. Der Abbruch-Button (oder ein anderer der Exit-Button, auch Ok, wenn das der einzige Exit-Button ist) kann auch mit Undo ausgelöst werden. Button zum Selektieren einzelner Optionen erscheinen mit vorangestelltem Quadrat, das im selektierten Zustand angekreuzt wird, ’Radiobutton’ also Button von denen immer nur einer selektiert sein kann erhalten einen vorangestellten Kreis, der beim selektierten Button ausgefüllt wird. Das Ganze ist irgendwie Mac-ähnlich und sieht jedenfalls im Vergleich zu herkömmlichen ST-Dialogen sehr edel aus. In Text-Feldern hat man die zusätzlichen Möglichkeiten mit Shift-Cursor links ans den Anfang, mit Shift-Cursor rechts an das Ende des Text-Feldes und mit Control-Cursor links bzw. rechts Wortweise nach links und rechts springen.

13wie man dies macht, ist nicht Gegenstand dieser Anleitung, wer nicht weiß, wie man ein Programm startet, wird vermutlich auch nicht mehr aus CHAOSultd herausfinden, da auch das Beenden des Programmes nicht Gegenstand dieser Anleitung ist. Ich will aber nicht schuld sein, wenn jemand bis zu seinem Lebensende mein Programm laufen lassen muß.

Im Prinzip kann man auch noch den Cursor in Text-Feldern mit der Maus setzen, dies funktioniert aber wegen eines Fehlers in den Routinen nicht richtig, wenn das Text-Feld außer dem edierbaren Eintrag noch einen Maskentext enthält. Dafür hat man in allen Text-Feldern, in denen beliebige Zeichen eingegeben werden können (also nicht nur alphanumerische Zeichen sondern der ganze Ascii-Code) die Möglichkeit durch Drücken der Insert-Taste eine Box mit allen Sonderzeichen aufzurufen, aus der man mit der Maus ein Zeichen auswählen kann (braucht man zwar in CHAOSultd nicht, ist aber trotzdem nett). Weiterhin werden Popup-Menüs unterstützt, von denen CHAOSultd auch ausgiebig Gebrauch macht.

Dialoge in CHAOSultd können auch in Fenster gelegt werden. CHAOSultd verwendet auch in Fenstern ausschließlich modale Dialoge, d.h. solange ein Dialog-Fenster geöffnet ist, kann nicht weitergearbeitet werden, sondern es muß der Dialog bearbeitet und geschlossen werden bevor es weiter geht. Der Vorteil von Dialogfenstern ist begrenzt, wenn man nicht ein Multitasking-Betriebssystem verwendet (MultiGem, Magix, vor allem aber MultiTos). Ohne Multitasking-Betriebssystem erlauben Fenster-Dialoge lediglich den Zugriff auf Accessories, mit erlauben sie anderen gleichzeitig laufenden Programmen weiterzulaufen und Ausgaben auf den Bildschirm (in Fenster natürlich) zu machen. In diesem Zusammenhang noch ein allgemeiner Hinweis. Pseudo-Multitasking-Systeme wie MultiGem und Magix sind darauf angewiesen, daß von den laufenden Programmen regelmäßig AES-Event-Aufrufe kommen (was immer das sein mag), da sie nur dann Prozesswechsel durchführen können (d.h. zwischen den Programmen umschalten). CHAOSultd stellt dies während der Berechnung von Bildern nicht sicher, das würde zuviel Rechenzeit kosten. Bei der Berechnung von Bildern mit Bildschirmanzeige (vgl. 2.3) wird ohnedies der gesammte Bildschirm für CHAOSultd reserviert, bei der Berechnung von Bildern ohne Bildschirmdarstellung ist man trotzdem auf ein echtes Multitasking wie von MultiTos angewiesen (wobei der Info-Dialog im Fenster ausgegeben werden muß, sonst ist ebenfalls der ganze Bildschirm gesperrt). Da ich weder MultiGem noch Magix noch MultiTos (was sollte ich mit letzterem auch auf meinem alten ST) habe, wurde CHAOSultd in keiner Weise mit solchen (Pseudo)- Multitasking-Systemen getestet! Obige Bemerkungen sind insofern rein theoretisch. So jetzt aber zu den Nachteilen der Dialogfenster, die auf einem altersschwachen System wie ich es nutze (8Mhz 68k) doch sehr erheblich sind. Es ist prinzipbedingt nicht möglich, den Hintergrund von Fenstern zu speichern, so daß nach dem Schließen des Fenster-Dialoges der Hintergrund jedesmal neu gezeichnet werden muß und das braucht Zeit. Nicht ewig, aber deutlich länger als das Restaurieren des Hintergrundes von normalen Dialogen, wo der Hintergrund (genügend Speicher vorausgesetzt, das habe ich schon mal erwähnt) zwischengespeichert wird, und so von der Dialogroutine selbst restauriert werden kann, was erheblich schneller geht.

1.3 Fenster

CHAOSultd verwendet als GEM-konformes Programm natürlich Fenster. Und zwar

• ein Objekt-Fenster, in dem die vorhandenen (Bild-)Objekte angezeigt werden

in der Info-Zeile des Objekt-Fensters wird die Zahl der vorhandenen Objekte, die Zahl der selektierten Objekte und der verbleibende freie Speicher angezeigt

• Anzeigefenster für ein oder mehrere Bild-Objekte (im folgenden Bild-Fenster genannt)

im Titel des Fensters wird der Name des gerade angezeigten Bildes genannt

• Anzeigefenster für Bildvergleiche/Blöcke/Konstante (im folgenden Anzeige-Fenster genannt)

Anzeige-Fenster unterscheiden sich von Bild-Fenstern dadurch, daß sie nicht direkt ein Bild-Objekt darstellen. Bei Blöcken/Konstanten liegt zwar ein Bild zugrunde, in diesem sind aber zusätzliche Linien eingezeichnet. Anders als Bild-Fenster gibt es in Anzeige-Fenstern immer nur ein Bild.

• Dialogfenster, die schon erklärt wurden

1.4 Objekte

CHAOSultd kennt drei Typen von Objekten:

1. Fraktale

Unter Fraktalen verstehe ich alle Bilder, die durch irgendwelche Berechnugsroutinen in CHAOSultd erzeugt werden. Insofern ist die Bezeichnung Fraktale natürlich nicht ganz richtig, da solche Bilder nicht notwendig fraktal sein müssen^{14}.

2. Bilder

gemeint sind parameterlose Bilder, die entweder geladen oder nach Bildvergleich (vgl. 4.2) usw. erzeugt wurden

Bilder ohne Parameter gibt es hauptsächlich der Vollständigkeit halber, sie spielen im folgenden kaum eine Rolle

3. Filme

Filme sind in CHAOSultd schlicht geordnete Bildlisten. Sie können etwa zum Verknüpfen mehrerer Bildfolgen oder zum Festlegen der Reihenfolge, in der bestimmte Bilder gezeigt werden sollen, dienen.

Bilder (Fraktale oder einfache Bilder) können jede Größe und Farbtiefe mit den eingangs angegebenen Beschränkungen besitzen.

Jedes im Speicher vorhandene Objekt wird durch ein Icon im Objekt-Fenster angezeigt.

14Bisweilen ist in dieser Anleitung auch von Fractalen die Rede, gemeint sind dann speziell Bilder, die mit den Routinen des Moduls ’Fractal’ unter den Menüpunkten Fractal(e), freie Fract. und 3d Fractal(e) erzeugt wurden.

Dabei werden die verschiedenen Typen von Fraktalen durch verschiedene Icon dargestellt. Ebenso gibt es ein eigenes Icon für reine Bild-Objekte und für Filme. Neben dem Objekt-Typ kann man am Icon ablesen, ob das zugehörige Objekt gespeichert ist oder nicht. Ist das Objekt gespeichert, so wird das Objekt abgehakt dargestellt (was man allerdings nur im unselektierten Zustand sehen kann). Bei Fraktalen kann man darüberhinaus sehen, ob das Bild schon vollständig berechnet wurde oder ob es noch nicht fertig ist. Unfertige Bilder werden ohne Rahmen, fertige mit Rahmen angezeigt. Nebeneinander werden im Objekt-Fenster stets nur so viele Objekte angezeigt, wie bei der gerade gewählten Fenster-Breite in das Fenster hinein passen. Sind mehr Objekte vorhanden, als im Fenster dargestellt werden können, so kann man mit dem vertikalen Scroll-Balken des Fensters einstellen, ab welchem Objekt die Objekte angezeigt werden sollen.

1.5 Selektieren von Objekten im Objekt-Fenster

Maus

Mit der Maus können

• einzelne Objekte angeklickt werden – sie änderen dann ihren Status. D.h. selektierte Objekte werden deselektiert, nicht selektierte ausgewählt.

• Gummibänder aufgezogen werden, wie man das vom Desktop her kennt. Gummibänder konnen (anders als auf dem Desktop) auch von rechts unten nach links oben aufgezogen werden. Während des Aufziehens wird der Mauszeiger nicht als Pfeil sondern als zeigende Hand dargestellt. Angesprochen werden damit alle Objekte, die ganz oder teilweise innerhalb des aufgezogenen Rechteckes liegen.

Der Zustand dieser Objekte wird je nach dem Status der Sondertasten verändert: ist keine Sondertaste gedrückt, so werden die Objekte selektiert, ist eine Shift-Taste gedrückt deselektiert und bei gedrückter Control-Taste wird der Objekt-Status geändert.

• Analog zur Vorgängerversion von CHAOSultd kann man auch Objektbereiche ansprechen, indem man zunächst einen Shift-Klick auf das erste Objekte ausführt. Klickt man nun ein weiteres Objekt an, so werden alle Objekte zwischen dem zuerst und dem dann angeklickten Objekt angesprochen. Diese werden wieder je nach Sondertasten-Status beim zweiten Klick selektiert, deselektiert oder geändert (letzteres ist nicht mehr analog zur Version 5.0).

Zwischem dem ersten (Shift-)Klick und dem Auswählen des zweiten Objektes wird der Mauszeiger innerhalb des Objektfensters als zeigende Hand dargestellt (wie beim Aufziehen eines Gummibandes). Damit soll gewissermaßen der andere Zustand, in dem sich der Mauszeiger jetzt befindet, deutlich gemacht werden. Ein Mausklick in diesem Zustand hat ja eine andere Wirkung als sonst.

Möchte nach der Auswahl des ersten Objektes doch auf die Selektion eines Objektbereiches verzichten, so kann man neben eines der Objekte klicken, der Sonderzustand der Maus wird dann aufgehoben.

Popup-Menü

Viele der Funktionen von CHAOSultd können auch über Popup-Menüs aufgerufen werden, auch zum Selektieren steht ein solches bereit. Aufgerufen wird es durch Doppelklick auf ein Objekt oder durch einfachen Mausklick neben die Objekte. Das Popup-Menü stellt vier Bereiche zur Verfügung, zum Selektieren, Deselektieren, Ändern und exklusivem Selektieren. In jedem Bereich kann man wählen, welche Objekte angesprochen werden sollen: Objekt (nur, wenn man auf ein Objekt geklickt hat), Zeile (nur, wenn man in eine Zeile geklickt hat), usw..

Tastatur

Neben den Mauskommandos und dem Popupmenü stehen noch eine Reihe von Tastaturkommandos zum Selektieren von Bilder zur Verfügung: Mit den Tasten F1 bis F10 selektiert man eine Zeile (1 bis 10) im Objektfenster; wählt man dabei eine Zeile, die kein Objekt enthält, so wird die letzte nichtleerer Zeile eingestellt – hat man mehr als zehn Zeilen im Objektfenster, dann kann man nur die ersten zehn Zeilen mittels Tastatur ansprechen (kann mir mangels Bildschirmauflösung nicht passieren; gemeint sind immer die angezeigten Zeilen; nicht sichtbare Objekte können via Tastatur nicht selektiert werden). Mit den Tasten 1 - 9, 0 und ß, ' sowie # kann man dann die einzelnen Objekte dieser Zeile ansprechen (wiederum maximal das 13. Objekte, aber wer hat schon einen so breiten Bildschirm), mit Tab die ganze Zeile. Clr wirkt auf alle Objekte (unabhängig der eingestellten Zeile). Die Taste Ins bezieht sich auf alle geänderten, aber nicht gespeicherten Objekte, Del auf alle fertigen Bilder, auf alle nicht fertigen. Die Tasten . und - wirken jedes zweite bzw. vierte Objekt. Dabei wird das Objekt bzw. werden die Objekte bei normalem Tastendruck selektiert, mit Shift-Taste deselektiert, mit Control geändert und mit Alternate als einziges Objekt selektiert. Mittels Cursor Up und Down kann man die Objekte nach oben oder unten scrollen, und zwar zeilenweise falls man die Cursor-Tasten alleine und seitenweise, falls man gleichzeitig die Shift-Taste drückt (anstatt den Scrollbalken des Fensters zu bemühen). Die Tastaturbefehle für das Desktop sind auch in einer Dialogbox zusammengefasst, die man durch Drücken der Help-Taste aufrufen kann.

Allgemein ist zum Selektieren von Objekten noch zu bemerken, daß selektierte Objekte selektiert bleiben, auch wenn sie aus dem Fenster herausgescrollt werden und deshalb nicht sichtbar sind.

1.6 Bedienungselemente zum Aufruf von Funktionen

Bevor die Funktionen von CHAOSultd im einzelnen erläutert werden, stelle ich zunächst die Möglichkeiten diese Funktionen aufzurufen kurz dar.

Menü

Die GEM-Menüleiste ist ja wohl allgemein bekannt, die Menüpunkte können auch durch die im Menü angezeigten Tasten aufgerufen werden.

Dennoch gibt es ein paar Besonderheiten zu beachten und zwar für viele Funktionen die sich auf Objekte von CHAOSultd – also Bilder, Fraktale etc. – beziehen. Bei der Frage, auf welche Objekte sich die Auswahl einer solchen Funktion jeweils bezieht, muß man zunächst unterscheiden, welches Fenster bei Auswahl des Menüpunktes gerade aktiv ist. Unterschieden wird zwischen Objekt-, Bild- und Anzeige-Fenstern. Ist kein Fenster von CHAOSultd aktiv (etwa weil ein Fenster eines Accessories aktiv ist) so bezieht sich die Objekt-Auswahl auf das letzte aktive Fenster von CHAOSultd. Ist kein Fenster von CHAOSultd offen, so gilt dasselbe wie bei aktivem Objekt-Fenster.

• Objekt-Fenster aktiv

– ist kein Objekt selektiert, so bezieht sich die Funktion auf alle Objekte (bzw. alle Fraktale, falls die Funktion für einfache Bilder keinen Sinn macht, oder auch alle nicht fertigen Bilder oder was auch immer)

– sind Objekte selektiert und zwar irgendwelche, so bezieht sich die Funktion auf die selektierten Objekte (soweit sie weitere notwendige Kriterien erfüllen, d.h. unter Umständen auf gar keine, nämlich dann wenn nur Objekte selektiert sind, die die weiteren Kriterien nicht erfüllen; in diesem Fall wird die Funktion ohne weitere Fehlermeldung abgebrochen), es seie denn,

– es wurde bei der Menüauswahl gleichzeitig mit dem Mausklick (links) die rechte Maustaste oder eine der Shift-Tasten gedrückt. In diesem Fall bezieht sich die Funktion wiederum auf alle Objekte.

• Bild-Fenster aktiv

– die ”normale“ Menüauswahl bezieht sich auf das gerade angezeigte Bild

– die Menüauswahl mit gedrückter Shift- oder rechter Maustaste bezieht sich auf alle Bilder der Bildliste

• Anzeige-Fenster aktiv

Die Menüauswahl bezieht sich auf das angezeigte Bild.

Die Auswahlmöglichkeiten, also die Frage, welche Menüpunkte man auswählen kann, und welche gesperrt sind, hängen natürlich von diesen Regeln ab, wegen der Möglichkeit des Shift-Klickens kann es sein, daß Menüpunkte für normales Auswählen inaktiv sind aber nicht gesperrt werden. Bei Funktionen die sich nur auf einzelne Bilder beziehen existiert die Möglichkeit des Shift-Klickens nicht, die Shift-Taste (rechte Maustaste) wird dann einfach ignoriert.

Popup-Menüs

Mit Hilfe der Popup-Menüs kann man ettliche Funktionen der Menüleiste ebenfalls aufrufen. Im Objekt-Fenster gibt es mehrere Popup-Menüs: das schon besprochene Menü zum Selektieren von Objekten sowie zwei Menüs zum Auswählen von Funktionen. Die letzten zwei erreicht man durch Mausklick rechts, wobei unterschieden wird, ob man auf ein Objekt klickt oder nicht (deswegen zwei Popup-Menüs, die unterschiedliche Funktionen enthalten).

Klickt man auf ein Objekt, so beziehen sich alle folgenden Auswahlen auf genau dieses eine Objekt, ansonsten gelten die gleichen Auswahlregeln wie bei der Auswahl mit dem Drop-Down-Menü bei aktivem Objekt-Fenster. (statt gleichzeitig gedrückter rechter Maustaste, wird das Popup-Menü allerdings mit rechter (oder linker) Maustaste verlassen). Die Auswahl mit dem Popup-Menü kann auch erfolgen, wenn das Objekt-Fenster zwar offen aber nicht aktiv ist (mit einem Mausklick rechts zum Aufruf des Menüs wird es auch nicht aktiviert). Weitere Popup-Menüs stehen in Bild-Fenstern und Anzeige-Fenstern zur Verfügung. Beim Popup in Bild-Fenstern wird (wie bei der Menüauswahl) je nach Zustand der Shift-Taste unterschieden, ob sich die Funktion auf alle Bilder (gedrückte Shift-Taste; natürlich nur falls überhaupt sinnvoll) oder nur auf das aktuelle Bild beziehen soll.

1.7 Online-Hilfe

CHAOSultd verfügt (im Prinzip) über ein umfangreiches kontextsensitives Hilfs-System. Im Prinzip, weil die Hilfstexte noch nicht geschrieben sind, und das Hilfs-System somit wenig hilfreich ist. Dennoch soll das Hilfs-System hier schon einmal beschrieben werden, auch wenn ich nicht weiß, ob und wann ich die Hilfstexte je schreibe (zumal die Resonanz^{15} auf CHAOSultd so umwerfend ist, daß das Programm vermutlich eh keiner außer mir benutzt, und wofür wird dann ein Hilfs-System gebraucht). Das Hilfs-System stellt wie gesagt zahlreiche Hilfstexte zur Verfügung und zwar

• zum Desktop und

• zu allen Menüs

diese Hilfstexte sind über das Keine Panik!-Menü (ja, das ist jetzt ein Menü) rechts oben zu erreichen. Den Hilfstext zum Desktop erreicht man auch durch Drücken der Help-Taste (dieser Hilfstext ist einer der wenigen Texte die schon geschrieben sind).

• zu jeder Dialogbox

in (fast) allen Dialogboxen existiert ein Hilfe-Button, den man anklicken kann, den man aber auch durch Drücken der Help-Taste aktiviert. Im allgemeinen findet sich dieser Button links unten, bei Platzmangel habe ich das Hilfe bisweilen zu H verkürzt.

Nach Aufruf des Hilfs-Systems erscheint der Hilfs-Dialog, in dem der Hilfstext angezeigt wird. Dieser kann aus bis zu 16 Seiten bestehen, zwischen denen man mit den Button weiter und zurück blättern kann. Neben diesen Button wird übrigens angezeigt, welche Seite von wievielen gerade dargestellt wird. Über den Button befindet sich eine Zeile, in der bis zu drei Querverweise zum Hilfstext angezeigt werden, die man durch Anklicken aufrufen kann. Dann wird der zu diesen Querverweisen gehörende Hilfstext geladen. Zurück zum vorherigen Hilfstext gelangt man mit dem Button voriges. Die maximale Schachtelungstiefe von Querverweisen ist 16. Ebenfalls wie ein Querverweis gehandhabt wird die Hilfe zur Hilfe, die man mit dem Hilfe-Button im Hilfs-Dialog aufrufen kann (dieser Text existiert ebenfalls bereits). Unabhängig von der aktuellen Schachtelungstiefe kann der Hilfs-Dialog mit dem Button Abbruch beendet werden.

15CHAOSultd ist POSTCARDWARE!

2 Bilder erzeugen

2.1 neue Bilder – Eingabe der Parameter

Um neue Bilder zu erzeugen wählt man im Menü Neu den Menüpunkt, der zum gewünschten Bildtyp gehört. Das Anklicken des Menüpunktes mit gedrückter Shift- oder Control-Taste hat eine Sonderbedeutung (vgl. 6.4), diese Sondertasten dürfen also nicht gedrückt sein.

Einstellen des Bildformates

Zunächst wird ein Dialog dargestellt, in dem man die Zahl der zu erzeugenden Bilder^{16}, den Namen der Bilder (oder des Bildes, man kann natürlich auch nur ein Bild erzeugen; bei der Erzeugung mehrerer Bilder werden die Bildnamen von CHAOSultd durchnummeriert, die letzten Zeichen im Namen werden dabei gegebenenfalls überschrieben) angibt, sowie die Größe und Farbtiefe des Bildes festlegt. Letzteres geschieht über Popup-Menüs für die Breite, die Höhe und die Zahl der Farben (bzw. Raster)^{17}. Bei Breite und Höhe enthält das Popupmenü natürlich nur eine Auswahl möglicher Größen, dazu gibt es die Möglichkeit, den Eintrag frei im Popup-Menü einzustellen und die Breite (bzw. Höhe) als Zahl einzugeben. Falls nötig wird diese Angabe modulo 16 bei der Breite und modulo 4 bei der Höhe (ab)gerundet (d.h. so, daß das Ergebnis durch 16 bzw. 4 teilbar ist). Hinter dem Popup-Menü für die Zahl der Farben wird noch die Zahl der dafür nötigen Bitmaps (Bildebenen) angegeben. Es ist möglich, daß bestimmte Routinen nicht alle Bildgrößen und vor allem Farbanzahlen unterstützen. Insbesondere gibt es jetzt schon einige Routinen, die nur zweifarbige Darstellung zulassen. Die Auswahlmöglichkeit ist dann eingeschränkt. Neben der expliziten Eingabe von Breite, Höhe und Farbzahl kann man auch ein Format als Ganzes auswählen, ebenfalls via Popupmenü. Die Einstellungen für Breite, Höhe und Farbzahl werden entsprechend den Parametern des gewählten Formates gesetzt. Der erste Eintrag dieses Popup-Menüs steht für das gerade verwendete Bildschirmformat, es folgen eine Reihe von möglichen anderen Formaten (einfach ausprobieren) ein nicht anwählbarer Eintrag unbekannt, der angezeigt wird, falls man mit der Einstellung für Breite, Höhe und/oder Farbtiefe ein Format gewählt hat, für das kein Eintrag im Popupmenü existiert, und ein Eintrag übernehmen. Mit diesem letzten Eintrag kann man die Parameter von einem geladenen Objekt übernehmen (vgl. 2.2). (Sind nicht alle Bildgrößen und/oder Farbanzahlen möglich, so werden die Parameter automatisch angepaßt.) Unter dem Format-Popup wird angezeigt, wieviel Speicher noch frei ist, wieviel Speicher ein Bild des gewählten Formates benötigt und wieviel Speicher alle Bilder zu berechnenden Bilder brauchen würden; dabei wird der Speicherplatzbedarf ungepackter Bilder zugrundegelegt, d.h. die Bilder belegen, falls sie gepackt werden, letztenendes weniger Speicherplatz. Die Anzeige wird nach der Anwahl eines der Popup-Menüs aktualisiert, man kann dieses Aktualisieren auch durch Anklicken der Anzeige erreichen. Falls Breite oder Höhe auf frei eingestellt ist, wird der gerade eingegebene Wert für diese Anzeige nur ausgelesen, wenn man nochmals auf frei in diesem Popup-Menü klickt oder die Anzeige durch Anklicken aktualisiert. Zum Verlassen der Dialogbox gibt es die üblichen Button Ok und Abbruch, links neben diesen gibt es noch einen Button Farben, der in den Farbselector verzweigt (s.u.).

16CHAOSultd erlaubt es Bilderfolgen zu erzeugen, bei denen nur die Parameter des ersten und letzten dieser Bilder eingegeben werden. Unter Zahl der Bilder ist die Zahl der zwischen diesen Bildern durch Interpolation zu erzeugenden Bilder gemeint

17CHAOSultd kann in monochromen Bitmaps durch Rasterung 5 (2x2 Raster) bzw. 17 (4x4 Raster)

Graustufen erzeugen

Anpassen der voreingestellten Formate

Dieser Abschnitt richtet sich nur an Insider, wer sich nicht mit Resource-Files auskennt oder kein Resource-Construction-Set besitzt kann die folgenden Zeilen getrost überlesen. Mit Hilfe eines RCS ist es möglich, die voreingestellten Formate (und ihre Namen) zu ändern. Zu diesem Zweck lade man die Resource-Datei CHAOS.RSC in das RCS. Selbstverständlich muß man vorher eine Sicherheitskopie des Resource-Datei anlegen. Man beachte auch, daß die Resource-Datei größer als 32kByte ist, nicht alle Resource-Construction-Sets können damit umgehen. Die Struktur der Resource-Datei darf auf keinen Fall verändert werden, dies kann man in Interface etwa dadurch erreichen, daß man Objektnummern fest einstellt). Der zweite Objektbaum enthält alle Popup-Menüs von CHAOSultd gem. Links unten befindet sich das Popup-Menü für den Format-Popup, rechts daneben sind innerhalb einer eigenen Box in Strings die zugehörigen Parameter (Breite Höhe Farbanzahl) angegeben. Durch Ändern der Texte (und nur dieser, wer die Anzahl der Objekte und damit die Struktur ändert, wird mit der geänderten Resource-Datei nicht mehr glücklich werden) kann man andere Formate für den Format-Popup realisieren. Andere Änderungen an der Resource-Datei sind untersagt!

Farbselector

Der Farbselector dient dem Einstellen der Farben, und das ist leichter gesagt als getan. Das Problem des Farbselectors ist, daß er auch bei monochromer Bildschirmdarstellung die Einstellung von bis zu 256 Farben zulassen muß, und das ist nicht so einfach zu realisieren, wenn man gleichzeitig hohen Komfort bei der Eingabe der Farben erreichen will. Die Bequemlichkeit des jetzt existierenden Farbselectors ist denn auch bei vielen Farben nicht so ganz überzeugend, wenngleich Interpolationsfunktionen auch die rasche Einstellung vieler Farben erlauben.

Der Farbselector zeigt prinzipiell nur die Einstellung einer Farbe an. Diese kann man links unten mit den Button << und >> auswählen, wobei Doppelklick zur ersten bzw. letzten Farbe schaltet. Stehen auf dem Bildschirm vier oder mehr Farben zur Verfügung so wird die gerade eingestellte Farbe in dem Balken unter der Farbnummer angezeigt (wobei alle Veränderungen sofort angezeigt werden). Die Farbeingabe wirkt ansonsten nicht direkt auf die eingestellte Farbtabelle. Den größten Teil des Farbselectors nehmen die beiden Kästen mit den Einstellbalken für die Farbe ein. Links hat man die Möglichkeit, die RGB- (Rot-, Grün- und Blau-) Werte der Farbe einzustellen, und zwar auf einer Skala von 0 bis 1000 (entsprechend den GEM-Konventionen) – rechts kann man alternativ die Farbe im HLS-Modell (hue, lightness, saturation; d.h Farbwert, Helligkeit und Sättigung) einstellen, wobei die Einstellung im einen Modell jeweils automatisch in die Anzeige des anderen übernommen wird. Mit der Auswahl der einzustellenden Farbnummer und der Einstellung der gewünschten Farbe im RGB- oder HLS-Modell kann man nun die Farbpalette zusammenstellen, was bei vielen Farben aber recht langwierig ist, weshalb es noch einige Hilfsfunktionen gibt. Dazu dienen die Button links von der Farbnummernanzeige. Mit Interp. kann man die zwischen zwei Farbnummern liegenden Farben durch Interpolation deren Werte berechnen. Klickt man den Button zum ersten Mal an, so wird die aktuell eingestellte Farbnummer als Startnummer gespeichert, der Button wird zur Erinnerung abgehakt dargestellt. Klickt man den Button jetzt noch einmal bei einer anderen Farbnummer an (es muß mindestens eine Farbnummer zwischen der Startnummer und dieser anderen Farbnummer liegen, sonst wäre das Ganze wenig sinnvoll), so erscheint ein Popup-Menü, in dem man auswählen kann, ob man im RGB- oder HLS-Modell interpolieren will (interpoliert wird stets linear zwischen den Anfangs- und End-Werten). Klickt man neben das Popup-Menü, so wird die Funktion abgebrochen, ansonsten werden die Farben interpoliert (kann bei vielen Farben vor allem im HLS-Modell etwas dauern). Übernehmen steht für die Übernahme der aktuell auf dem Bildschirm eingestellten Farben. Damit kann man – wenn man Fensterdialoge verwendet, und die einzustellende Farbtabelle nicht mehr Farben als die Bilderschirmdarstellung enthält – die Farben mit einem externen Accessory einstellen, und dann in CHAOSultd übernehmen. Holen bedeutet, daß man die Farben aus einem bereits bestehenden Bild-Objekt in CHAOSultd auslesen lassen kann. Wählt man den Menüpunkt an, so kann man auf dem Objektfenster durch Doppelklick ein Objekt auswählen, dessen Farben dann übernommen werden (siehe auch 2.2). Standart setzt die Farben auf eine (eher mäßige) Standarteinstellung, die auch vor Aufruf des Farbselectors eingestellt wird (s.u.). U neben den Button zum Verlassen (Abbruch und Ok) ist der Undo-Button, mit dem man den Zustand wiederherstellen kann, in dem man den Farbselector aufgerufen hat.

Noch ein Wort zur Voreinstellung der Farben. Der Aufruf des Farbselectors von der Dialogbox zum Einstellen des Bildformates ist nicht obligatorisch. Dennoch müssen die Farben natürlich irgendwie gesetzt werden. Ebenso sollte man beim Aufruf des Farbselectors irgendeine wenigstens einigermaßen passende Voreinstellung vorfinden (zumindest müssen die Werte zwischen 0 und 1000 liegen, sonst spielt der Farbselector nämlich verrückt). Um dies zu erreichen, erzeugt CHAOSultd für die Farbtabelle eine Voreinstellung (Standarteinstellung)^{18}. Und zwar entweder unmittelbar vor dem Aufruf des Farbselectors oder bei Verlassen der Dialogbox zum Einstellen des Bildformates, wenn der Farbselector nicht aufgerufen wurde und noch keine Farbtabelle erzeugt wurde. Das Problem dabei ist die unbekannte Zahl von Farben, die sich mit der Einstellung des Bildformates ändern kann. Wird die Zahl der Farben nach Aufruf des Farbselectors erhöht, so geht CHAOSultd davon aus, daß keine Farbtabelle existiert. Wird die Zahl der Farben verringert, so wird die Farbtabelle abgeschnitten, was aber nicht unbedingt zu einem brauchbaren Resultat führen muß – in diesem Fall ist der Anwender gefragt. Man sollte deshalb immer zuerst die Zahl der Farben einstellen (und dann konstant lassen; Vorsicht beim Wählen eines Formates) und sich dann um die Einstellung der Farbtabelle kümmern; dann sollten keine Probleme auftreten.

18die Voreinstellung ist derzeit bei zwei Farben scharz und weiß (genaugenommen umgekehrt); bei 4 bis 16 Farben werden die Farben einer 16 farbigen Farbtabelle entnommen und bei mehr als 16 Farben zwischen den Farben dieser 16 farbigen Tabelle interpoliert

Fraktal-Parameter

Nach der Eingabe des Bildformates und eventuell der Farbtabelle müssen noch die Fraktal-Parameter, die von den Berechnungsroutinen abhängen und das zu erzeugende Bild im einzelnen festlegen, eingegeben werden. Die Details dieser Eingabe hängen von den Berechungsroutinen ab.

2.2 Übernahme von Daten aus bestehenden Objekten

Bei der Einstellung des Bildformates und der Farbtabelle, aber auch bei der Eingabe von Fraktal-Parametern, ist es möglich, die Daten aus einem schon bestehenden Objekt zu übernehmen, bei Fraktal-Parametern kann man auch Blöcke oder einzelne Punktkoordinaten in Bildern mit der Maus markieren (soweit die Berechnungsroutinen dies unterstüzen). Ruft man in der entsprechenden Dialogbox diese Funktion(en) auf, so wird zunächst die Dialogbox geschlossen und der Desktop angezeigt, man befindet sich in einer Art Auswahl-Zustand von CHAOSultd. Viele der Funktionen von CHAOSultd lassen sich auch in diesem Zustand aufrufen, nicht allerdings das Verlassen des Programmes und alle Funktionen zum Erzeugen von Bildern. Es ist prinzipiell unmöglich, diesen Zustand aus diesem Zustand heraus nochmal aufzurufen (wenn man etwa die Bildparameter und dann den Farbselektor aufruft, kann man die Funktion holen nicht aufrufen). Wie kann man nun aber Objekte oder Blöcke bzw. Koordinaten auswählen? Was man auswählen kann, hängt von der aufrufenden Funktion ab, ebenso wie die Frage, welche Daten dann übernommen werden. Objekte werden ausgewählt, indem man auf ein Objekt im Objekt-Fenster doppelklickt. Dabei ist es möglich, daß sich die Objekt-Auswahl auf Objekte eines speziellen Objekttypes beschränkt, die Auswahl eines Objektes mit einem anderen Objekttyp bewirkt dann den Abbruch der Auswahl. (Bisher) nur beim Edieren von Filmen (vgl. 3.3) ist auch die Angabe eines Bereiches von Objekten möglich, analog zum Selektieren eines Objektbereiches. So wie dort, klickt man zunächst ein Objekt mit gedrückter Shift-Taste an – dieses Objekt ist dann der Anfang des Bereiches; ebenso wie beim Selektieren wird der Mauszeiger als zeigende Hand dargestellt (CHAOSultd weiß ja auch noch gar nicht, ob man einen Bereich selektieren oder auswählen will). Doppelklickt man jetzt auf ein Objekt, so wird dieses als Ende des Bereiches erfaßt und der Bereich ist ausgewählt. Dabei wird die Reihenfolge der beiden Objekte beachtet, d.h. der Bereich beginnt bei dem zuerst angeklickten Objekt und endet beim zweiten, auch wenn das zweite in der Objektliste weiter vorne steht. Blöcke werden ausgewählt, indem man in ein Bild-Fenster klickt und dann einen Rahmen aufzieht, der dem gewünschten Block entspricht. Das geht nicht bei allen Bildern, da nicht immer eine Zuordung der Bildpunkte zu Koordinaten möglich ist (beispielsweise nicht bei 3d Fractalen; ebensowenig bei geladenen parameterlosen Bildern). Blöcke können allerdings nicht nur in Bild-Fenstern, sondern auch in Anzeige-Fenstern bei Block- oder Konstanten-Anzeigen ausgeschnitten werden, sie beziehen sich dann auf das zugrundeliegende Bild (vgl. 4.3 und 4.4. Prinzipiell nicht möglich ist das Ausschneiden von Blöcken aus Bildvergleichen. Koordinaten eines Bildpunktes wählt man durch Doppelklick in ein Bild aus, wobei die gleichen Einschränkungen wie bei Blöcken gelten. Abbrechen kann man die Auswahl von Daten durch einen Doppelklick ins Objektfenster, neben ein Objekt.

Während dieses Auswahlzustandes kann man mit der Help-Taste einen Hilfsdialog anzeigen, der diese Optionen kurz wiederholt, wobei nicht mögliche Optionen grau dargestellt werden. Außerdem wird angezeigt, wofür man die Daten auswählt, und ob ein beliebiges Objekt oder nur ein Objekt eines speziellen Objekttypes (der dann genannt wird) ausgewählt werden soll.

2.3 Berechnung von Bildern

Berechnungsmodi

Es gibt zwei grundsätzlich verschiedene Berechnungsmodi in CHAOSultd gem. Im einen wird auf dem (gesamten) Bildschirm das Ergebnis der laufenden Berechnung angezeigt (soweit es draufpaßt). Im anderen wird die Berechnung ohne gleichzeitige Anzeige auf dem Bildschirm durchgeführt. Dann weist lediglich ein Info-Dialog rechts oben auf dem Bildschirm (gegebenenfalls im Fenster) auf die Berechnung hin. Dadurch spart man sich die Punktzeichnerei auf dem Bildschirm, die wegen der GEM-konformen Ausgabe halt auch ihre Zeit braucht. Wichtig für Multitasking-User: wird der Info-Dialog nicht in ein Fenster gelegt, so wird durch ihn der ganze Bildschirm für GEM-Ausgaben gesperrt! Beim Mitzeichnen auf den Bildschirm wird das Bild in die Bildmitte zentriert, solange es kleiner als der Bildschirm ist; ist es größer, so wird die linke obere Ecke angezeigt. Bei diesem Mitzeichnen kann (bisher nur bei monochromen Bildern oder Bildschirmen) das Ausgeben der Punkte gepuffert werden, was man aber auch abstellen kann (dann geht es noch langsamer). An dieser Stelle findet sich ein Fehler, nicht in CHAOSultd aber in NVDI. Macht man das Ganze in mittlerer Auflösung (aber mit zweifarbigem Fraktal), dann wird von den gepufferten Punkten immer nur einer gezeichnet (betrifft nur die Bildschirmdarstellung; intern wird das Bild korrekt erzeugt). Dieser Fehler liegt nicht bei CHAOSultd (er verschwindet, wenn man NVDI rausschmeißt), am einfachsten umgeht man ihn, indem man die Pufferung der Ausgabe abschaltet.

Berechnungsunterbrechung

Die aktuelle Berechnung eines Bildes kann (soweit von den Berechnungsroutinen unterstützt) auf zweierlei Weise unterbrochen werden. Durch Drücken der Space-Taste kann man einen Info-Dialog aufrufen, in dem angezeigt wird, welches Bild gerade berechnet wird, wie weit dieses Bild schon berechnet wurde etc.. Durch Drücken der Esc-Taste kann man die Berechnung des aktuellen Bildes abbrechen. Drückt man gleichzeitig die Shift-Taste, so werden eventuell noch folgende Bilder nur noch erzeugt, ihre Berechnung aber nicht mehr begonnen. Drückt man gleichzeitig die Alternate-Taste, so werden weitere Bilder auch nicht mehr erzeugt (wobei vorher eventuell noch nachgefragt wird, ob man dies wirklich will). Im Zusammenhang mit dem Berechnungsinfo ist noch eine kleine Unzulänglichkeit von CHAOSultd zu konstatieren: wird das Berechnungsinfo beim Berechnen mit Anzeige aufgerufen und ist CHAOSultd (besser MyDial) nicht in der Lage, den Hintergrund zu puffern, so wird dieser nicht restauriert, sondern der Bildschirm schlicht gelöscht (Auf das zu berechnende Bild hat das natürlich keinen Einfluß), anschließend werden nur die neu berechneten Punkte ausgegeben.

Weiterberechnen von Bildern

Durch Anklicken von weiter im Extra-Menü kann man unfertige Bilder weiterberechnen lassen. Die Berechnung kann genauso wie beim Berechnen neuer Bilder abgebrochen werden. Ist ein Algorithmus nicht in der Lage ein Bild nach Berechnungsabbruch weiterzuberechnen, so kann er bei Berechnungsabbruch das Bild für fertig erklären; einige Routinen erlauben dies auch durch den Benutzer zu erzwingen (z.B. Hüpfer). weiter läßt sich in diesem Fall natürlich nicht mehr verwenden. Bei übergroßen, zeilenweise berechneten Bildern wird beim Aufruf von weiter der beim Berechnen angezeigte Bildausschnitt angepaßt. Dieser wird solange nach unten verschoben, bis das restliche Bild (in der Höhe) ganz auf den Bildschirm paßt. Bis dahin erfolgt die Anzeige der Berechnung so, daß die erste neu berechnete Zeile jeweils die oberste ist.

2.4 Neu berechnen

Dieser Menüpunkt dient dazu, Bilder mit teilweise geänderten Parametern neu zu berechnen – etwa wenn man Bilder testweise in einem kleinen Bildschirmformat berechnet hat, und jetzt große Bilder haben will, aber auch wenn man einen der Parameter aller Bilder (z.B. die Berechnungstiefe von Apfelmännchen) ändern will. Zunächst kann man eventuelle Änderungen des Bildschirmformates eingeben. Dazu dient die gleiche Dialogbox, in der man auch das Bildschirmformat neuer Bilder einstellt, allerdings mit einigen Änderungen. Zum einen kann man bei den Parametern des Bildschirmformates angeben, welche der Parameter verändert werden sollen. Dazu dienen die Button links von den Parametern. Ein Parameter wird geändert, wenn der Button selektiert ist. Zum anderen kann man die Box statt mit Ok mit zwei anderen Button verlassen, nämlich Neu und Überschr., wobei der erste Button bedeutet, daß veränderte Bilder neu erzeugt werden^{19}, der zweite Button bedeutet, daß veränderte Bilder die alten Bilder überschreiben.

Werden die Bilder neu erzeugt, so wird ihr Bildname aus dem alten Bildnamen wie folgt erzeugt: ist der Name weniger als 7 (6 oder weniger) Zeichen lang, so wird N an den alten Namen angehängt ist der Name genau 7 Zeichen lang, so wird N angehängt. ist der Name 8 Zeichen lang, so läßt sich nichts mehr anhängen; in diesem Fall wird das letzte Zeichen ermittelt, das noch keine Ziffer ist; endet der Name nicht auf eine Ziffer, so wird eben der letzte Buchstabe verwendet; enthält der Name nur Ziffern, so wird die erste dieser Ziffern herangezogen. Dieses letzte Zeichen wird nun eins weitergezählt (aus A wird B etc.). Z wird zu , und 9 wird zu A.

Nach der Eingabe der zu ändernden Format-Parameter wird für alle Bildtypen der betroffenen Bilder, die die Funktion unterstützen^{20}, eine Dialogbox angezeigt, in der die zu ändernden Parameter und ihre neuen Werte eingeben werden können. Verläßt man eine solche Dialogbox mit Abbruch, so werden die Bilder dieses Types nicht neu berechnet, die Funktion wird aber nicht insgesamt abgebrochen. Nach Eingabe der zu ändernden Parameter werden die Bilder mit den geänderten Parametern (soweit nötig) neu berechnet.

19natürlich nur, wenn sie wirklich verändert wurden

20möglicherweise auch – wie bei Fractalen, s.u. – für mehrere Bildtypen gemeinsam

2.5 extended Neu, Block, …

(eine blöde Überschrift, aber was blöderes ist mir nicht eingefallen)

Neben der Möglichkeit Bilder mit geänderten Parametern neu berechnen zulassen, indem man die Funktion Neu berechnen aufruft, gibt es für einzelne Bilder noch eine Alternative. Man ruft dazu Neu berechnen auf, wobei nur ein Fraktal angesprochen sein darf, und drückt dabei die Control-Taste. Man landet dann nicht in dem Menüs für neu berechnen, sondern in denen für das Erzeugen neuer Bilder des entsprechenden Bildtypes, wobei aber die Daten des Fraktals voreingestellt werden. Man kann so alle Parameter – und nicht nur die im Neu-Dialog vorgesehenen – ändern und anschließend das Bild erzeugen. Dabei wird das Bild stets neu erzeugt (und zwar mit dem in den allgemeinen Parametern angegebenen Namen; voreingestellt ist dafür der Name des Bildes, das selektiert war), überschreiben ist nicht möglich. Der Effekt ist damit der gleiche, als hätte man das Berechnen von Bildern dieses Types aufgerufen, und dann in den allgemeinen Parametern wie in den speziellen Fraktalparametern mit der Funktion Daten holen die Daten des Bildes übernommen. Allerdings ist der Aufruf über Neu berechnen doch um einiges einfacher. In analoger Weise kann man auch Blöcke ausschneiden oder Konstanten für Bilder vorgeben. Dazu markiert man einfach in einem Bild- oder Anzeige-Fenster bei gedrückter Control-Taste einen Block (Rahmen aufziehen) oder eine Konstante (Doppelklick) analog zum Holen von Daten. Anschließend geht es weiter wie bei ’extended Neu’. Noch eine Anmerkung: einige der Berechnungsroutinen unterscheiden beim Holen von Daten zwischen der Übernahme aller Daten und der nur eines Teiles (z.B. Fractale). Diese Unterscheidung gibt es auch hier, wobei zum Unterschieden (wie beim Holen der Daten) die Shift-Taste dient. Ihr Status wird entweder unmittelbar vor oder alertnativ nach der Eingabe der allgemeinen Parameter herangezogen. Die Möglichkeit, die Shift-Taste vor der Eingabe der allgemeinen Parameter zu drücken entfällt bei extended Neu im allgemeinen, da dann ja Neu für alle Objekte und nicht nur für das eine selektierte Objekt aufgerufen würde (eine bedauerliche Doppeldeutigkeit der Bedienung). Weitere Anmerkung: die Möglichkeiten des extended Neu werden von allen Routinen, die auch das Übernehmen von Daten ermöglichen, unterstützt, derzeit also von allen (auch wenn die Routine neu berechnen selbst gar nicht unterstützt).

3 Bilder verwalten

Die weiteren Einträge im Extra-Menü dienen im weitesten Sinne der Verwaltung der Bilder (zum Menüpunkt neues Objekt siehe 4.6).

3.1 Bilder konvertieren

Die Funktion konvertieren erlaubt es, Bilder zu skalieren (vergrößern oder verkleinern) und mehrfarbige Bilder in zweifarbige (monochrome) Bilder umzurechnen, die Farben werden dann durch Grauraster dargestellt. Die Funktion wirkt auf beliebige Bildobjekte, das Ergebnis wird in neuen Bild-Objekten abgelegt, deren Namen änlich wie bei neu berechnen erzeugt wird, nur daß statt des ’N’ ein ’K’ zum Markieren verwendet wird. Beim Skalieren hat man die Möglichkeit, die Bilder um einen Faktor 2 zu vergrößern (Seitenlänge!) oder um Faktoren 1/2, 1/4 oder 1/8 zu verkleinern. Außerdem kann man noch angeben, ob das eventuell existierende Raster eines Bildes beim Skalieren beachtet werden soll (sonst wird auf Pixelebene skaliert). Beim Konvertieren gibt es mehr Möglichkeiten: Unterschieden werden muß zunächst zwischen grundsätzlich unterschiedlichen Algorithmen, der Fehler-Diffusion (Floyd-Steinberg), die in CHAOSultd auch mit Graurastern arbeitet, und dem (geordneten) Dithern. Am besten probiert man die verschiedenen Algorithmen einfach aus, und schaut sich die Ergebnisse an, jedenfalls werde ich mich jetzt nicht zu weitschweifigen Erläuterungen aufschwingen. Bei der Fehlerdiffusion kann man wählen, ob der Fehler auf 4, 6, 12 oder 0 Punkte verteilt werden soll (im letzten Fall findet keine Fehlerdiffusion mehr statt, so daß man direkt in Grauraster übersetzen lassen kann), und ob Grauraster verwendet werden sollen (dann wird das Bild dadurch nochmals vergrößert!). Möglich sind 1x1 Raster (also Pixel, zwei Farben), 2x2 Raster (5 Farben), 3x3 Raster (10 Farben) und 4x4 Raster (17 Farben). (3x3 Raster sind deutlich langsamer als die anderen Raster! (8 ist einfach nicht durch 3 teilbar)) Weiter kann man angeben, ob die Farben absolut oder relativ umgesetzt werden sollen, im ersten Fall ist schwarz schwarz, grau grau und weiß weiß, im letzten Fall wird die dunkelste Farbe des Quellbildes zu schwarz (auch wenn sie grau ist), die hellste zu weiß. Dadurch werden zwar die Farben verfälscht, dafür ist der Kontrast im Ergebnis besser. Der Dithering-Algorithmus (orderd dither) stellt (bisher) keine weiteren Optionen zur Verfügung. Die Umsetzung der Farbe muß noch für beide Algorithmen angegeben werden. Im RGB-Modus gehen der Rot-, Grün- und Blau-Anteil gewichtet ein, im HLS-Modus wird die Lightness L verwendet (Achtung, L kann leicht für verschiedene Farben gleich sein). Wählt man Ignorieren der Farbpalette, so wird den Farben einfach ein Graukeil zugeordent, von Schwarz für Farbe 0 bis Weiß für die letzte Farbe. Über den beiden Methoden zum Konvertieren gibt es noch eine Möglichkeit Bitmaps auszuwählen, die noch nicht realisiert ist (sie ist für die Konvertierung von angezeigten Bildern gedacht). Wählt man sie an, so wird NICHT konvertiert, d.h. man kann Bilder nur skalieren. Beim Konvertieren der Bilder werden diese zuerst skaliert, dann konvertiert, wobei Konvertieren bei Bildern, die schon monochrom sind, ausgelassen wird. ACHTUNG! Insbesondere das Konvertieren kann recht lange dauern (Minuten). Die Möglichkeit des Abbrechens mit ’ESC’ ist nur nach dem Ende des Konvertieren eines Bildes möglich, falls man mehrere Bilder konvertieren läßt (analog etwa zum Packen oder Laden).

3.2 Bilder packen

CHAOSultd ist in der Lage, Bilddaten im Speicher zu komprimieren (packen), so daß sie weniger Speicherplatz belegen. Andererseits müssen gepackte Bilder vor dem Anzeigen entpackt werden, was natürlich Zeit braucht. Deshalb kann man einerseits in den Einstellungen wählen, ob Bilder gepackt werden sollen oder nicht und andererseits gepackte Bilder auspacken oder nicht gepackte Bilder packen lassen. Zum letzteren dient der Menüpunkt Bilder packen, man kann hier Bilder packen aber auch entpacken. Nach Anwahl des Menüpunktes Bilder packen erscheint eine Dialogbox, in der angezeigt wird, wieviel Speicher die entpackten Bilder, die gepackten Bilder und die gepackten Bilder entpackt belegen. Außerdem wird die Größe des freien Speichers angezeigt. Verlassen kann man die Box außer mit Abbruch mit Packen oder Entpacken, so daß man nicht gepackte Bilder packen oder gepackte Bilder entpacken kann. Während des Packens/Entpackens eines Bildes wird ein Info-Dialog angezeigt, zwischen zwei Objekten ist der Abbruch der Funktion mittels der Esc-Taste möglich.

3.3 Film edieren

Dieser Menüpunkt dient dem Erzeugen neuer Filme und dem Ändern bestehender Filme gleichermaßen. Wie schon gesagt, sind Filme in CHAOSultd einfach geordnete Listen von Bildern. Ein neuer Film wird erzeugt, indem man den Menüpunkt ohne selektierten Film aufruft. In einer Dialogbox kann (muß!) man dann den Filmnamen eingeben. Ist bei Aufruf der Funktion genau ein Film selektiert, so kann man diesen Film edieren. In beiden Fällen gelangt man in den Filmeditor, eine Dialogbox zum Edieren von Filmen. Den größten Teil des Filmeditors bildet die Anzeige eines Bildausschnittes des aktuellen Bildes. Diese Anzeige läßt sich abschalten (dann wird einfach eine weiße Fläche angezeigt), sie ist nur dann aktiv, wenn der Button ’Bild’ rechts unten selektiert ist. Bei großen Bildern wird natürlich nicht das ganze Bild angezeigt, sondern nur die rechte obere Ecke. Unter der Bild-Anzeige befindet sich eine Info-Zeile und zwei Zeilen mit Funktions-Button, ählich wie in CHAOSultd V5.0x. In der Infozeile stehen (von links nach rechts) der Filmname, die Anzahl der Bilder im Film, die Nummer und der Name des Bildes, das gerade angezeigt wird (gemeint ist die Nummer im Film, nicht die auf dem Desktop). In der oberen Kommandozeile gibt es die folgenden Kommandos: Die Button < − und − > dienen zum Blättern im Film. Ein Einfachklick schaltet ein Bild weiter (− >) oder zurück (< −), Doppelklick schaltet an den Filmanfang oder an das Ende. Gewissermaßen vor dem Filmanfang mit Bild 1 wird noch ein (stets leeres) Bild Null verwaltet, beim Einfügen von Bildern werden diese nämlich nach dem aktuellen Bild eingefügt, um also ein neues Bild 1 einzufügen muß man auf Bild Null schalten. Womit wir beim nächsten Punkt wären, dem Einfügen von Bildern. Dazu dient der Button Einfügen. Klickt man ihn an, so wird der Desktop angezeigt, und man kann das oder die Bilder angeben, die eingefügt werden sollen. Einzelne Bilder doppelklickt man einfach an, darüberhinaus kann man aber auch durch Shift-Klick (wie beim Selektieren mehrerer Bilder (vgl. 2.2) mehrere aufeinanderfolgende Bilder in den Film übernehmen, wobei die Reihenfolge der beiden Mausklicks berücksichtigt wird. Doppelklick neben ein Bild bricht die Funktion ab, ohne ein Bild in den Film aufzunehmen.

Die gegenteilige Wirkung, nämlich das Löschen von Bildern übernimmt der Button Löschen. Mit ihm wird das aktuelle Bild aus dem Film gelöscht. Mit dem nächsten Button Optionen kann man die Anzeigeoptionen des Films einstellen. Sie entsprechen den Optionen beim Anzeigen von Bildern, jeder Film verwaltet allerdings eigene Optionen (die beim Erzeugen des Filmes mit den gerade eingestellten Anzeigeoptionen für Bilder vorbelegt werden). Dies ist die einzige Möglichkeit, die Anzeigeoptionen im Film zu ändern. Änderung der Anzeigeoptionen beim Zeigen von Filmen (s.u.) führen nur zur Änderung für dieses Anzeigen. In der unteren Kommandozeile befinden sich die Button für die Blockfunktionen. Mit Einfachklick auf Start und Ende kann man Blockanfang und -ende festlegen, wobei Start natürlich vor Ende liegen muß. Sind die Blockmarken gesetzt und die jeweiligen Bilder als aktuelles Bild eingestellt, so erscheinen diese Button invers; mit Doppelklick auf Start oder Ende kann man zu der entsprechenden Marke springen. Es folgen die Blockkommandos Copy, Move und Delete, die sich wohl selbst erklären. Das Kommando Reverse dreht die Reihenfolge der Bilder eines Blockes um. Die maximale Zahl von Bildern, die ein Film enthalten kann, ist auf 32000 begrenzt. Die maximale Zahl von Bildern, die der Filmeditor verwalten kann, gibt man in den Einstellungen an (256-32000). Verlassen wird der Filmeditor wie üblich mit Ok oder Abbruch.

3.4 Löschen

Möchte man Objekte löschen, so selektiert man diese und klickt anschließend den Menüpunkt Objekte löschen im Datei-Menü an. (Man kann sich das selektieren auch sparen, dann werden aber alle Objekte gelöscht). Nach einer eventuellen Warnung (vgl. Einstellungen, 6.3) werden die Objekte gelöscht. Es ist nicht möglich, Bilder, die sich in einer Bildliste für ein Bild-Fenster befinden, die in Filmen enthalten sind, oder die gerade im Filmeditor aufgelistet werden, zu löschen; versucht man dieses, so wird man in einer Dialogbox darauf hingewiesen. Bezieht sich Löschen nur auf selektierte Bilder, so kann man fortfahren, indem man weiter wählt. Dann werden die Bilder der Bildliste, der Filme oder des Filmeditors vom Löschen ausgenommen.

4 Anzeigefunktionen

4.1 Bilder anzeigen

Wenn man Bilder einmal erzeugt hat, dann will man sie natürlich auch anschauen. Dazu gibt es in CHAOSultd zwei prinzipielle Möglichkeiten: das Anzeigen in einem (Bild-)Fenster und das Anzeigen auf dem ganzen Bildschirm. Letzteres entspricht (in etwa, d.h. modulo interner Details, die sich aber auf Geschwindigkeit etc. auswirken) der Anzeige in der Version 5.0, insbesondere mit der Möglichkeit Bilder automatisch weiterschalten zu lassen. Allerdings sind die diversen Optionen beim Anzeigen, fast ausschließlich von der Anzeige im Fenster bzw. vom Desktop aus erreichbar (wie das Anzeigen der Parameter, Konstante anzeigen, Koordinaten zeigen …). In der Ganzseiten-Anzeige kann man nur noch die Anzeigeoptionen einstellen. Bilder, die die größer als der Bildschirm sind, können natürlich nicht ganz angezeigt werden. Bei ihnen kann mit den Cursor-Tasten (bzw. den Scrollbalken der Fenster) gescrollt werden. Was unter Umständen auch nicht vollständig angezeigt werden kann sind die Farben: bei Bildern mit mehr Farben (bzw. Farbebenen) als auf dem Bildschirm dargestellt werden können stellt CHAOSultd nur die ersten Farbebenen dar^{21}, der Rest der Information geht verloren. CHAOSultd verfügt im Moment über keinerlei Möglichkeit Bilder beim Anzeigen durch Rasterung oder andere Algorithmen zu konvertieren. Möglich ist es allerdings Bild-Objekte in monochrome Bilder zu konvertieren. Bei der Anzeige im Fenster führt die Anzeige der Farben des Bildes natürlich zur Änderung der Farben auf dem ganzen Desktop. Da dies bei Aufruf von Dialogboxen unter Umständen sehr unpraktisch ist, kann man in den Einstellungen drei Modi für das Einstellen der Farben von Bild- und Anzeige-Fenstern wählen: im einfachsten Fall bleiben die Farben in jedem Fall entsprechend dem angezeigten Bild eingestellt. Alternativ gibt es die Möglichkeit, beim Aufruf von Dialogboxen die Farben auf die des Desktops umzustellen. Nach Verlassen der Dialogbox werden dann wieder die Farben des Bildes angezeigt. Als dritte Möglichkeit kann man noch einstellen, daß die Farben des Bildes nur solange angezeigt werden, wie sich der Mauszeiger im Fenster des Bildes befindet.

Die Anzeige im Fenster wird durch den Menüpunkt Fenster im Zeigen-Menü aufgefufen, die Anzeige auf dem ganzen Bildschirm durch den Menüpunkt Bildschirm. In jedem Fall wird zunächst intern eine Bildliste aller betroffenen Bilder erstellt, die im weiteren die im Fenster dargestellten Bilder festlegt. Diese Bildliste ist unabhängig von späteren Veränderungen der Objekte, sie bleibt unverändert, auch wenn man zusätzliche Bilder selektiert oder deselektiert (was natürlich nur beim Anzeigen in einem Fenster möglich ist, die Ganzseitendarstellung ermöglicht natürlich keinen Zugriff auf das Objekt-Fenster).

Anzeigeoptionen

Die Anzeigeoptionen entsprechen denen der Version 5.0, allerdings ist kontinuierliches Anzeigen (bisher?) nur in Ganzseitendarstellung möglich. Diesbezügliche Einstellungen werden in Bild-Fenstern einfach ignoriert.

21dies führt dazu, daß die Farben modulo (d.h. Teilungsrest) der Farbzahl auf dem Bildschirm gerechnet werden. Auf diese Weise werden Farbabfolgen (wie Farbe 1, Farbe 2, Farbe 3 etc.) wieder zu Farbabfolgen (mit weniger Farben), so daß Strukturen erkennbar bleiben

Darüberhinaus verwaltet CHAOSultd jetzt für jede Bildliste (also für jedes Bild-Fenster) eigene Optionen, man kann bei deren Einstellen wählen, ob die Einstellungen nur für diese lokalen Optionen gelten sollen, oder ob sie auch global übernommen werden sollen, was aber nur heißt, daß sie dann für die im folgenden geöffneten Bild-Fenster gelten. Einstellen lassen sich die Anzeigeoptionen zusammen mit weiteren Parametern unter dem Menüpunkt Optionen. Dort kann man zunächst den Anzeigemodus mit Warten auf Taste und Kontinuierlich einstellen. Darunter kann man die Wartezeiten für ein Bild und am Ende der angezeigten Bilder einstellen, wobei man die Zeiten sowohl numerisch (in ms)^{22} wie auch mit Hilfe eines Sliders wählen kann (dabei dient das Anklicken des grauen Balkens nicht zum Verschieben des Sliders, sondern der Slider wird entsprechend des als Text angezeigten Wertes gesetzt). Die Wartezeit muß mindestens auf 20 ms gesetzt werden, da es sonst zu Bildschirmflackern kommt, gibt man kleinere Zeiten an, so wird die Wartezeit automatisch auf diesen Wert gesetzt. Desweiteren kann man noch einstellen, ob die Bilder nur einmal oder wiederholt angezeigt werden sollen (nur dann findet die Wartezeit am Anzeigeende Verwendung), und ob im zweiten Fall dann wieder mit dem ersten Bild angefangen werden soll (’− > − >’) oder ob die Bilder abwechselnd vor- und rückwärts durchgegangen werden sollen (’− > < −’).

4.2 Bildvergleich

Mit der Funktion Bildvergleich können Bilder (genauer die Information in den Bitmaps der Bilder) durch logische Verknüpfung verglichen werden. Wird die Funktion aufgerufen, so muß man zunächst in einer Dialogbox angeben, welche Verknüpfung (and, or oder xor) ausgeführt werden soll. Sind die Bilder verschieden groß so bestimmen die maximalen Abmessungen die Größe des resultierenden Bildes. In diesem Fall kann man noch wählen, ob die kleineren Bilder relativ zu diesem Größten zentriert oder im linken oberen Eck eingesetzt werden sollen. Die Farbtiefe des Ergebnisses bestimmt sich ebenfalls aus der des Bildes mit der größten Farbtiefe. Nach dem Verlassen des Dialoges werden die Bilder verknüpft und das Ergebnis in einem Anzeige-Fenster dargestellt. Man beachte, daß es je nach Bilderzahl und Bildgröße unter Umständen etwas länger dauern kann, bis die Verknüpfung der Bilder durchgeführt wurde und das Anzeige-Fenster geöffnet wird. Bildvergleiche zweier Bilder kann man mit der Verknüpfung xor durchführen; dann bleiben im resultierenden Bild genau die Teile der Bilder übrig, die nicht gleich sind (mit der Verknüpfung and kann man umgekehrt die Bildteile erhalten die gleich sind).

4.3 Block zeigen

Mit der Funktion Block zeigen kann man sich anzeigen lassen, welchem Bildausschnitt ein oder mehrere andere Bilder in einem (Mutter-)Bild entsprechen. Wie beim Bildvergleich wird ein Anzeige-Fenster geöffnet, in dem das Ergebnis angezeigt wird. Ergebnis ist in diesem Fall das Bild, das den größten Ausschnitt besitzt, in diesem sind die Ausschnitte, die die anderen Bilder darstellen als Rechtecke markiert. (Ob es sich dann wirklich um Blöcke handelt ist natürlich eine andere Frage).

22aus technischen Gründen nur in 5 ms Schritten, ist der Wert nicht durch 5 teilbar wird er abgerundet;

Die Funktion wird nicht von allen Bildtypen unterstützt. Es muß zum einen ein Koordinatensystem existieren, damit man überhaupt von einem Ausschnitt sprechen kann, und dieses Koordinatensystem muß in einfacher Weise auf die Bitmap abgebildet sein, damit Blöcke markiert werden können. (Die erste Voraussetzung erfüllen bisher alle Routinen, die zweite wird etwa von 3d-Fractalen verletzt).

4.4 Konstante anzeigen

Mit dieser Funktion kann man sich in einem Bild die Lage einer durch die Parameter bestimmten Konstante (zweikomponentig, x- und y- Komponente bzw. Real- und Imaginärteil) anzeigen lassen. Abgesehen davon, daß die Funktion nur auf ein Bild wirkt, ist sie analog zum Block anzeigen.

4.5 Koordinaten anzeigen

In allen Bildern, zu denen ein Koordinatensystem gehört, kann man die Koordinaten am Ort des Mauszeigers anzeigen lassen. Ruft man die Funktion auf, so wird im Fenstertitel die Mausposition in Pixel und Koordinaten angezeigt, solange sich der Mauszeiger im Fenster befindet. Die Funktion wird beendet, sobald man eine Funktion aufruft, ein anderes Fenster nach oben holt eine Taste drückt etc.

Punktinfo

Nicht beendet wird die Funktion durch einen Doppelklick in das Fenster. Dadurch wird stattdessen ein Punktinfo für den betreffenden Punkt aufgerufen (sofern von den Routinen unterstüzt, bisher nur bei Fractalen).

4.6 neues Objekt

Bei allen Bild- und Anzeige-Fenstern kann man mit der Funktion neues Objekt im Extra-Menü ein neues Bild-Objekt erzeugen, das das angezeigte Bild enthält. Bei Bild-Fenstern wird wirklich unmittelbar das angezeigte Bild übernommen (also insbesondere mit der Farbtiefe des Desktops), bei Anzeige-Fenstern das Bild, so wie es bei Aufruf des Anzeige-Fensters erzeugt wurde (also unter Umständen mit einer anderen Farbtiefe als der des Desktops). (Für Bild-Fenster ist die Funktion im Moment etwas überflüssig, sie existiert gewissermaßen im Vorgriff auf die für später vorgesehene Möglichkeit, Bilder für die Anzeige zu konvertieren.)

4.7 Bild-Parameter anzeigen

Unter Bildparameter im Zeigen-Menü kann man sich die allgemeinen Bildparameter eines Bildes anzeigen lassen. Angezeigt wird

• Bildname und Dateipfad

Name und Pfad können ediert oder durch Anklicken des Quadrates rechts über dem Pfad mittels der Dateiselectorbox geändert werden

• Bildtyp, etwa Bild (für einfaches Bild) oder der Fraktaltyp • Bildgröße

hier wird die Größe in Bild-Punkten angegeben. bei unfertigen Bildern wird neben der Höhe des fertiggerechneten Bildes in Klammern die aktuell vorliegende Größe des berechneten Teilbildes angegeben

Außerdem wird die Zahl der Farben angegeben

• Größe der Bitmap (Breite mal Höhe mal Zahl der Bitmaps)

kann bei Verwendung von Rastern von der Bildgröße abweichen, dann wird bei der Bildgröße ein Rasterpunkt als ein Punkt, bei der Größe der Bitmap als 2x2 bzw. 4x4 Punkte gezählt

• Speicherbedarf des gespeicherten (meist also gepackten) Bildes und Speicherbedarf des vollständig berechneten entpackten Bildes

Außerdem hat man von hier Zugriff auf die Farbtabelle des Bildes, mit dem Button Farben kann man in den Farbselektor verzweigen. Änderungen des Bildnamens und Pfades werden mit Ok übernommen, mit Abbruch verworfen. Änderungen der Farbtabelle bleiben auch bei Abbruch bestehen, wenn man den Farbselektor mit Ok verlassen hat. Bildparameter können auch für Anzeige-Fenster angezeigt werden, dann werden natürlich nicht die Parameter eines Objektes sondern die des angezeigten Bildes dargestellt.

4.8 Farben

Mit diesem Menüpunkt hat man direkten Zugriff auf die Farben eines Objektes.

4.9 Fraktal-Parameter anzeigen

Mit dem Menüpunkt Parameter im Zeigen-Menü kann man sich die Parameter eines Fraktals anzeigen lassen. Details sind Sache der Berechnungsroutinen.

4.10 Info anzeigen

Unter Info kann man eine Dialogbox aufrufen, in der man einige mehr oder weniger (eigentlich weniger) interessante Informationen über die berechneten Bilder anschauen kann, im wesentlichen die Berechnungszeit, die Zahl der berechneten Iterationen und die Zahl der gezeichneten Punkte. Ist genau ein Fraktal selektiert, so kann die Berechnungsroutine für das Bild eine detaillierte Info-Box ausgeben, die dann natürlich von der Berechnugsroutine abhängt. Stellt die Berechnungsroutine eine solche Funktion nicht zur Verfügung, unterstützt aber die Ausgabe von Bildinfos^{23}, oder sind mehrere Bilder betroffen, so wird eine Info-Box angezeigt, in der die Anzahl der Bildpunkte, die Zahl der berechneten Iterationen^{24} sowie die benötigte Rechenzeit – insgesamt und pro Punkt bzw. Iteration – ausgegeben wird.

23indem sie dem Verwaltungsteil Informationen über Berechnungszeit sowie Iterations- und Punktanzahl zur Verfügung stellt

24was im einzelnen unter einer Iteration zu verstehen ist liegt bei der Berechnungsroutine; korrekter wäre vieleicht auch die Bezeichnung Berechnungsschritte – nicht alle Routinen sind iterativ

5 Input/Output

5.1 Speichern

Mit den Menüpunkten Speichern und Speichern … kann man Objekte abspeichern. Für Fraktale und Filme gibt es ein eigenes Dateiformat, Bilder können im GEM-Image-Format (inclusive XIMG-Header) und (aus Gründen der Tradition) im Stad-Format gespeichert werden; beim Stad-Format wird nur eine Bitplane (wie beim Anzeigen auf einem monochromen Bildschirm) und gegebenfalls nur die linke obere Ecke gespeichert. Fraktale lassen sich ebenfalls in diesen Bildformaten speichern, dabei werden aber die Bild-Parameter nicht mit abgespeichert, so daß als Bild gespeicherte Fraktale nicht als gespeichert betrachtet und gekennzeichnet werden. Speichern … unterscheidet sich von Speichern dadurch, daß man zunächst in der Fileselectorbox ein Dateipfad und optional ein Extension angeben kann. Der Pfad wird dann zum Defaultpfad, der für alle Objekte vorgeschlagen wird; mit dem Extension kann der Bildtyp gewählt werden (PAC Stad, IMG GEM-Image). Ist ein Extension angegeben, so werden auch Fraktale defaultmäßig in diesem Format gespeichert. Im Modus Speichern ist der Defaultpfad der in den Einstellungen angegebene, er wird aber nur verwendet, wenn der Pfad eines Bildes noch nicht gesetzt ist (das ist dann der Fall, wenn das Bild neu erzeugt wurde und nicht geladen). Für jedes zu speichernde Objekt wird nun zunächst eine Dialogbox aufgebaut, in der die Nummer des Objektes, der Objekttyp (Fraktal oder Bild) und der Objektstatus (geändert oder unverändert,d.h. gespeichert) angezeigt wird (die Box kann in den Einstellungen abgestellt werden, s.u.). Unter diesen zur Information dienenden Angaben befindet sich der Bildname und der Dateipfad, außerdem wird das Dateiformat angezeigt. Dieses kann man durch Anklicken eines der Button ändern, es wird dann automatisch das entsprechende Extension in den Namen eingetragen. Mit dem Quadrat-Button können Namen und Pfad via Dateiselectorbox geändert werden, natürlich ist dies auch direkt mit der Tastatur möglich. Der Dateityp, unter dem ein Bild oder auch ein Fraktal abgespeichert wird, wird durch das hier eingestellte Dateiextension festgelegt. CHS ist nur bei Fraktalen möglich und bedeutet das Abspeichern als Fraktal; mit PAC oder IMG wird das Fraktal oder das Bild im entsprechenden Dateityp gespeichert. Andere Extension sind nicht möglich; versucht man mit einem anderen Extension zu speichern, so korrigiert CHAOSultd das Extension, gibt eine Meldung aus und verläßt die Dialogbox nicht. Zum Verlassen der Box stehen vier Button zur Verfügung: bei Speichern wird das Bild gespeichert und die Dialogbox für das nächste Bild angezeigt, weiter geht zum nächsten Bild über ohne das aktuelle Bild zu speichern, Abbruch bricht den ganzen Speicherprozess ab. Bleibt noch Info aus. Mit diesem Button kann man veranlassen, das für die noch folgenden zu speichernden Bilder keine Eingaben mehr gemacht werden können. CHAOSultd stellt dann nur noch die Parameter in der gleichen Weise wie bisher dar, geht aber anschließend sofort mit den Defaultparametern zum Speichern über (Dies läßt sich auch von Anfang an erreichen, indem man in den Einstellungen die Nachfrage bei save abstellt. Es ist aber zumindest anfangs zu empfehlen, wenigstens beim ersten Bild zu überprüfen, ob die Speicherfunktion auch das tut, was man wollte.). In diesem Fall kann das Abspeichern durch Drücken der ESC-Taste abgebrochen werden.

Kommt es beim Speichern zu einem Namenskonflikt (eine Datei soll erzeugt werden, die schon besteht) so wird dies (abhängig von den Einstellungen des Programms) in einer der Dialogbox beim Speichern sehr ähnlichen Box angezeigt. Man kann hier den Namen nochmals ändern, und die Box wiederum auf viererlei Weise verlassen. Überschreiben speichert das Objekt mit dem eingestellten (eventuell geändertem) Namen ohne sich um eine eventuell bestehende Datei zu kümmern, Weiter und Speichern arbeiten wie oben beschrieben; Msg. aus schaltet analog zu Info aus die Warnung von Überschreiben ab. Gespeicherte Objekte werden auf dem Desktop abgehakt dargestellt, Fraktale, die nur als Bilder gespeichert wurden gelten wie gesagt nicht als gespeichert. Filme werden erst nach allen anderen Objekten gespeichert. Sie können prinzipiell erst gespeichert werden, wenn alle in ihnen enthaltenen Objekte gespeichert sind; andernfalls erhält man eine Fehlermeldung.

5.2 Laden

Mit dem Eintrag Laden im Menü Datei kann man Objekte wieder einladen. Außer den speicherbaren Bildformaten können auch das Degas-Format (monochrom!, PIC) und das (nichtgepackte) Degasformat (PI1-3) geladen werden. Es erscheint die Dateiselectorbox, mit der einzelne oder auch mehrere Bilder ausgewählt werden können. Gibt man explizit einen Dateinamen an, so wird diese eine Datei geladen. Gibt man aber keinen Dateinamen an, so werden alle in der Dateiselectorbox gerade dargestellten Dateien, der unterstützten Dateiformate (also alle Dateien mit den Extension CH?, PIC, PI?, PAC und IMG) geladen. Das Einladen läßt sich durch Drücken der Esc-Taste abbrechen. Beim Laden von Filmen werden die in diesen enthaltenen Bildern – sofern sie nicht bereits geladen sind – automatisch nachgeladen.

5.3 Drucken

Alles was von Druckroutinen in CHAOSultd existiert sind die Menüpunkte Bilder drucken und Druckparameter. Irgendwann soll es einmal Hardcopyroutinen als externe Routinen geben. Von mir sicher nur für 24Nadler, eventuell auch für GDOS.

5.4 Clipboard

CHAOSultd unterstützt das Clipboard, obwohl ich nicht so recht weiß, wofür man das eigentlich braucht (naja, ich will nicht ungerecht sein, in einer Multitasking-Umgebung mag es schon seine Berechtigung haben). Die Unterstützung ist allerdings nicht vollständig, mit dem Clipboard kann nur gearbeitet werden, wenn das Clipboard-Pfad gesetzt ist (z.B. von einem Clipboard-Accessory oder von Gemini oder von was auch immer; CHAOSultd selbst setzt den Pfad jedenfalls nicht). Ist der Clipboard-Pfad nicht gesetzt, so brechen die Clipboard-Funktion ohne Fehlermeldung ab. Man kann einerseits Bilder (nein ein Bild, das ist ja das Dumme am Clipboard) aus dem Clipboard laden, sofern eine SCRAP.IMG Datei im Clipboard liegt. Ist keine Datei vorhanden so erscheint eine Fehlermeldung, daß keine Datei im Clipboard liegt.

Zum anderen kann man ein Bild (wenn genau eins selektiert ist) im Clipboard als SCRAP.IMG Datei (und nur als solche) ablegen. Alle eventuell vorhandenen SCRAP-Dateien werden gelöscht.

6 Einstellungen

6.1 Speicher-Info

Das Speicher-Info gehört natürlich eigentlich auch nicht zu den Einstellungen ist aber im gleichen Menüpunkt Optionen gelandet. Im Speicher-Info kann man sich anzeigen lassen, wieviel (interner) Speicher gerade wofür benötigt wird …

Über dem Speicher-Info findet sich übrigens noch ein Eintrag, in dem man das Objekt-Fenster ein- und ausschalten kann. (Ausschalten kann man es natürlich auch durch Schließen des Fensters.)

Jetzt aber zu den eigentlichen Einstellungen. Diese sind aus Platzgründen auf zwei Dialogboxen verteilt.

6.2 Einstellungen I

Hier finden sich die Einstellungen für Dialogfenster, Berechnung und Ränder beim Anzeigen. Im einzelnen kann man wählen:

• Dialoge in Fenster legen

• Dialoge zentrieren

• Info-Dialoge in Fenster legen (gilt nur für die Dialoge beim Berechnen; die Info-Dialoge beim Laden/Speichern werden nicht in Fenster gelegt)

• die Positionierung der Info-Dialoge, an der letzten Position, zentriert oder rechts oben

• Darstellung des Randes beim Anzeigen auf dem Bildschirm: weiß, grau oder schwarz

Darstellung des Randes beim Anzeigen in Fenstern

• Berechnung von Bildern anzeigen oder verdeckt berechnen

• Puffern der Ausgabe auf den Bildschirm

• Gong am Berechnungsende; der Button hinter dem Text, dient zum Testen des Gonges

Anmerkung: der Gong wird durch Ausgabe des Zeichens 7 (nicht die Ziffer 7, sondern der ASCII Code 7) via Gemdos erzeugt. Das ist der selbe Gong, der (ensprechende Einstellung im Kontrolfeld vorausgesetzt) auch ertönt, wenn man neben eine Dialogbox klickt. Dazu ist es nötig, daß in den Systemvariablen das entsprechende Flag gesetzt ist, das man eben auch löschen kann, beispielsweise mit dem Kontrolfeld. Deswegen setzt CHAOSultd diese Flag beim Programmstart und setzt es beim Verlassen wieder auf den alten Wert zurück. Ändert man nun während CHAOSultd läuft mit einem Accessory dieses Flag, so wird erstens (beim Löschen des Flags) der Gong beim Berechnungsende nicht funktionieren und zweitens diese Änderung beim Verlassen von CHAOSultd überschrieben. Das Ein- oder Ausschalten des Gongs schaltet auch die drei Gongs ein bzw. aus, mit denen auf eine Garbage Collection hingewiesen wird.

• im Prinzip ist auch noch vorgesehen, hier die Cursor-Form bei Block einzustellen. Gegenwärtig wird nur der Maus-Cursor unterstützt, so daß die Einstellung sich erübrigt

6.3 Einstellungen II

Im zweiten Teil der Einstellungen kann man wählen:

• welcher Dateipfad standartmäßig zum Laden bzw. Speichern verwendet wird

• ob vor dem Speichern die Info-Dialogbox angezeigt werden soll

• welche Sicherheitsabfragen CHAOSultd tätigen soll vor dem Überschreiben von Dateien vor dem (unwiederuflichen) Abbrechen der Berechnung vor dem Löschen von Objekten und vor dem Verlassen des Programmes

• wieviel Speicher CHAOSultd freilassen soll

• ob neue/geladene Bilder gepackt werden sollen

• für wieviele Bilder im Filmeditor Speicher reserviert werden soll (min. 256, max. 32767)

6.4 Parameter-Voreinstellungen

Mittels Shift-Klick auf einen der Einträge zum Erzeugen neuer Bilder eines bestimmten Fraktal-Types kann man die Voreinstellungen der Parameter für diese Fraktal-Typ aufrufen und die Parameter ändern – soweit diese Funktion unterstützt wird, was aber (bislang) meist der Fall ist. Ebenso lassen sich die allgemeinen Bildparameter für jeden Bildtyp einstellen.

Seltener vorhanden ist eine Funktion die bei Control-Klick auf einen dieser Einträge aufgerufen wird, und für die es keine fest vorgesehene Verwendung gibt, sie wird einfach für irgendwelche zusätzlichen Aktionen, die womöglich gebraucht werden, bereitgehalten.

6.5 Parameter speichern

Durch Auswahl des Menüpunktes Parameter speichern kann man die eingestellten Parameter abspeichern. Die Parameter werden ausschließlich in der Datei CHS ULTD.SET im Ordner CHS ULTD.GEM gespeichert. Zu den Parameter die gespeichert werden gehören die Einstellung von CHAOSultd (einschließlich der Anzeigeoptionen und der Einstellungen der Konvertierungsroutinen), die der verschiedenen Routinen (soweit geladen) und die Positionen der Dialoge und Fenster. Dialog- und Fensterpositionen werden vor dem Speichern in auflösungsunabhängige Normalkoordinaten umgerechnet, so daß diese Einstellung auch bei Auflösungswechsel (jedenfalls einigermaßen) erhalten bleibt. Früher schon gespeicherte Parameter nicht geladener Routinen werden kopiert, sie bleiben also erhalten.

Teil II

die Fractal-Routinen

1 der Algorithmus

Fractale im Sinne dieser Routinen beruhen auf einer Verallgemeinerung von Mandelbrotund Julia-Mengen – erstere sind auch als Apfelmännchen bekannt. Apfelmännchen beruhen bekanntlich auf Folgen komplexer Zahlen, die durch die Rekursionsformel

z_{n+1} = z_{n}^{2} − z_{0}

definiert sind^{25}. Das Bild entsteht dann so, daß man einen Teil der komplexen Ebene auf den Bildschirm abbildet und für jeden Punkt z_{0} untersucht, ob und wenn wann die Glieder der zugehörigen Folge dem Betrage nach einen bestimmeten Wert (die Abbruchbedingung) überschreitet. Die Farbe des Punktes bestimmt sich dann aus der der Anzahl der nötigen Iterationen bis zum Erreichen der Abbruchbedingung. Julia-Mengen werden fast genauso berechnet, allerdings lautet die Rekursionsformel hier

z_{n+1} = z_{n}^{2} + c

wobei c eine für alle Bildpunkte gleiche, komplexe Konstante ist. In den Fractal-Routinen von CHAOSultd sind nun diese beiden Formeln zur folgenden zusammengefaßt:

z_{n+1} = z_{n}^{2} + αz_{0} + c

wobei α eine (reelle) Konstante ist. Apfelmännchen erhält man aus dieser Formel leicht durch α = ±1 und c = 0, Juliamengen durch α = 0 und c ≠ 0. Diese Berechnungsformel liegt den Bildern, die mit den Menüpunkten Fractal(e) und 3d Fractal(e) erzeugt werden, zugrunde. Bei pseudo-dreidimensionalen Bilder wird dabei die Berechnungstiefe eines Punktes nicht durch seien Farbe dargestellt, sondern direkt als Höheninformation verwendet. Für freie Fract. kann die Berechnungsformel explizit angegeben werden so daß man selbst experimentieren kann.

25statt des ’-’ findet man teilweise auch ein ’+’

2 Parameter

2.1 benötigte Parameter

Wie gesagt, wird ein Ausschnitt der komplexen Zahlenebene auf den Bildschirm abgebildet. Dazu muß man natürlich diesen Ausschnitt, durch den minimalen und maximalen Real- und Imaginärteil festlegen. Des weiteren muß α, die Konstante c (Real- und Imaginärteil), die Abbruchbedingung^{26}, also die Zahl die der Betrag der komplexen Zahl aus der Rekursionsformel übersteigen soll, und die maximale ”Tiefe“, d.h. die maximale Anzahl von Rekursionsschritten, nach der die Berechnung spätestens abgebrochen wird, festgelegt werden. Die max. Tiefe kann bis 9999 groß werden, je größer sie ist, desto länger dauert allerdings auch die Berechnung des Bildes. (Bei einer Tiefe von 9999 kann die Berechnung eines einzigen Bildes durchaus mehrere Tage in Anspruch nehmen. Im allgemeinen verwendet man kaum Tiefen über 250). Die Abbruchbedingung kann aufgrund des für schnelle Berechnungen (s.u.) verwendeten Festkommazahlenformates nicht größer als 11 werden, aufgrund ihrer Definition ist sie stets positiv, also größer 0. Für die anderen Parameter wird lediglich geprüft, ob der minimale Real-/ Imaginärteil auch wirklich kleiner als der maximale ist, ebenfalls aufgrund des Zahlenformates dürfen diese Parameter dem Betrage nach nicht größer als ca. 127 sein. Da die interessanten Strukturen aber ohnedies im Bereich von ±3 real und ±2 imaginär liegen (zumindest in etwa) sollten sich damit trotz der an dieser Stelle fehlenden Sicherheitsabfragen keine Probleme ergeben^{27}. Weiterhin muß man natürlich festlegen, wie die Anzahl der Rekursionsschritte in Farben umgesetzt werden soll. Auch hier erlaubt CHAOSultd wesentlich mehr Einstellungsmöglichkeiten als andere Programme. Gewöhnlich ordnet man die Farben der Schrittanzahl so zu, daß sich die Farben immer wieder zyklisch wiederholen. In CHAOSultd sind dagegen maximal fünf unabhängige Bereiche möglich. Für jeden Bereich, der durch die maximale Schrittanzahl, für die er noch gelten soll, festgelegt wird, kann man entweder eine feste Farbe oder aber das zyklische Wiederholen einer bestimmten Anzahl von Farben festlegen. Im letzteren Fall muß man angeben, welche Farben (kleinste und größte Nummer), welche Farbe zuerst, und wieviele verschiedene Schrittanzahlen für eine Farbe man haben will. Zu guter letzt kann man noch wählen, in welcher Farbe Punkte erscheinen sollen, für die die maximale Tiefe erreicht wurde. Außer diesen Parametern, die den Bildinhalt beschreiben, kann man zwischen zwei Berechungsroutinen wählen: schnell und exakt, wobei schnell mit einem speziellen Festkommazahlenformat arbeitet, während exakt die Rechenroutinen von Turbo/Pure C verwendet^{28}. (exakt ist natürlich wesentlich langsamer, weshalb ich von der Benutzung im allgemeinen abrate).

26viele Apfelmännchenprogramme verwenden 2 als Abbruchbedingung, allerdings finde ich die Bilder, die mit der Abbruchbedingung 10 entstehen, schöner

27im Berechnungsmodus exakt (s.u.) lassen sich theoretisch auch größere Bereiche realisieren, aber wie gesagt, finden kann man da an sich nichts

28das heißt es wird mit 80 Bit Fließkommazahlen und einer entsprechenden Genauigkeit von 19 signifikanten Ziffern gearbeitet. Außerdem wird ein eventuell vorhandener Fließkommacoprozessor automatisch genutzt.

2.2 Eingabe der Parameter

Wie Sie sehen ist für jedes Bild also eine ziemlich Anzahl an Parametern einzustellen. Dazu kommt noch, daß die meisten Parameter doppelt vorhanden sind, um Bildfolgen, bei denen nur das erste und letzte Bild angegeben werden, zu ermögliche – die Parameter der übrigen Bilder werden dann durch Interpolation berechnet. Für gewöhnliche Bilder, wie man sie mit anderen Fraktalprogrammen auch erzeugen kann, gibt es aber einige Funktionen, die das Einstellen der Parameter erleichtern. Um Fractale zu erzeugen klickt man in der Menüleiste den Menüpunkt Fractal(s) im Menü Neu an. Es erscheint dann die (ziemlich umfangreiche, also nicht erschrecken) Dialogbox zum Eingeben der Parameter, in der (sofern die Einstellungsdatei CHS ULTD.SET korrekt geladen wurden) bereits Parameter voreingestellt sein sollten (diese Voreinstellung ist jedesmal dieselbe, sie kann geändert werden, wenn man den Menüpunkt Fractal(s) mit gedrückter Shift-Taste aufruft; bei einem erneuten Aufruf findet man also nicht wieder die Parameter vor, die man zuletzt eingestellt hatte).

Einzelbilder

Zunächst sollen der Einfachkeit halber nur die Parameter erläutert werden, die man für die Erzeugung eines einzelnen Bildes benötigt, wenn man also in den allgemeinen Parametern unter Bilderzahl 1 eingetragen hat. Oben links wird angezeigt, welchen Bildnamen, Bilderzahl und Bildgröße man eingestellt hat. Darunter kommen zweispaltig die einzelnen numerischen Bildparameter, wie in 2.1 erläutert. Dabei interessiert für Einzelbilder nur die linke Spalte, die rechte bleibt unbenutzt; auch die Button rechts von den Parametern brauchen vorerst nicht zu interessieren. Nun folgt noch die Einstellung des Berechnungsmodus, schnell oder exakt. Die Einstellung der Farben wird aus Platzgründen lediglich angezeigt (im kleinsten Systemzeichensatz), eingestellt wird sie in einer eigenen Dialogbox, in die man mit dem Button Farbcod. gelangt.

In dieser Box gibt man die Angaben für bis zu fünf Farbbereiche ein, die aber nicht alle genutzt werden müssen. Zunächst kommt die Angabe, bis zu welcher Tiefe der Bereich gelten soll. Der erste Bereich beginnt mit der Tiefe 0, der zweite direkt nach dem ersten usw. Der letzte verwendete Bereich muß durch die Angabe von 9999 als Endtiefe gekennzeichnet werden, folgende Bereiche werden, auch falls vorhanden nicht mehr beachtet. Bei den Bereichen wird nicht darauf geachtet ob sie sinnvoll mit der max. Berechnungstiefe zusammenpassen, d.h. man könnte auch bei einer max. Berechnungstiefe von meinetwegen 50 einen Bereich von 75-100 definieren, obwohl ein solcher Bereich nie genutzt würde. Als nächstes muß man festlegen, ob in dem Bereich die Farben zyklisch durchgewechselt werden sollen oder nicht. Dazu dient der Button zykl.; ist er aktiviert, so werden die Farben durchgewechselt, ansonsten nicht. Im letzteren Fall muß nur noch festgelegt werden, welche Farbe dem Bereich zugeordnet werden soll. Dies geschieht durch den Eintrag Farbe. Dabei gibt es eine Besonderheit, gibt man als Farbe -1 an, so wird die auf die zuletzt verwendete Farbe folgende Farbe hergenommen, handelt es sich um den ersten Farbbereich, so wird die Farbe 1 verwendet (auf diese Weise kann man nach zyklischen Bereichen im Farbverlauf fortfahren ohne sich erst die letzte Farbe des Bereiches überlegen zu müssen).

Bei zyklischen Bereichen legt der Eintrag Farbe die erste verwendete Farbe fest. In den Einträgen ... bis ... gibt man an, welche Farben hergenommen werden sollen (dabei muß der erste Eintrag kleiner sein als der zweite; beim zweiten Eintrag kann man -1 für die größte mögliche Farbe, abhängig von der Farbzahl angeben) und mit Step erklärt man, wieviele Tiefenstufen in der gleichen Farbe dargestellt werden sollen. Als letzter Farbparameter muß schließlich noch eingestellt werden, in welcher Farbe Punkte dargestellt werden sollen, die ”tiefer“ als die max. Tiefe liegen, auch hier ist -1 als Joker verwendbar.

Ähnlich wie man mit Farbcod. in die Farbeinstellung gelangt, kann man mit Allg. Par. die Dialogbox für die Einstellung der allgemeinen Parameter aufrufen, etwa um Bildformat, Name oder Bilderzahl nochmal zu ändern.

Was jetzt noch fehlt, sind die Button -> alles, -> links und -> rechts. Mit diesen ruft man Popup-Menüs auf, die verschiedene Funktionen zur Eingabe der Parameter bieten. Das alles-Popup bietet Funktionen, die sich auf alle Parameter (d.h. die Parametersätze für das erste und die für das letzte Bild, auch wenn ich für letztere auf den nächsten Abschnitt verweisen muß) beziehen. Hier kann man erstens alle Einträge im gesammten Dialog löschen, zweitens die Voreinstellung aufrufen (die schon bei Aufruf des Dialoges eingestellt war) und drittens, die Parameter links nach rechts kopieren. Die links- und rechts-Popups sind gleich, sie unterschiedet nur die Tatsache, daß links auf die linke und rechts auf die rechte Parameter-Hälfte wirkt, und teilweise – wenn man bei der Auswahl im Popup-Menü gleichzeitig die Shift-Taste drückt – jeweils auf die gemeinsamen Parameter. In diesem Popup stehen die folgenden Optionen zur Verfügung: man kann die Parameter löschen, man kann aus Objekten Daten holen und man kann sich das Verhältnis von Höhe zu Breite der Parameter und des Bildformates ansehen. Es existiert noch ein weiterer Eintrag im Popup-Menü, nämlich Random, der aber bei Fractalen nicht aktiv ist^{29}. Beim Holen von Daten kann man entweder nur die nach rechts und links getrennten Daten übernehmen oder mit Shift alle (natürlich nur, wenn das Objekt ein Fractal ist). Möglich ist die Auswahl eines (beliebigen) Objektes, eines Blockes oder einer Konstante (die dann bei c eingetragen wird). Ist das Objekt kein Fractal, so wird nur der Bildausschnitt (wie bei Block) übernommen. Soweit zu den Parametern für die Erzeugung eines Bildes. Ich kann gut verstehen, daß Ihnen das ganz schön kompliziert vorkommt. Es ist wohl auch nicht ganz einfach, aber zum einen muß man ja nicht jedes Detail ausnutzen und zum anderen muß man einfach ein bißchen herumprobieren, dann findet man sich mit der Zeit schon zurecht. Wer allerdings geglaubt hat, schlimmeres könnte ihm nicht wiederfahren, der hat sich geirrt, es kommt noch schlimmer:

Fractalbildfolgen

Wie bereits erwähnt gehört es zu den Fähigkeiten von FRACTAL, nicht nur Einzelbilder, sondern auch Bildfolgen berechnen zu können. Dabei müssen die Bildparameter für das erste und das letzte Bild sowie die Bildzahl angegeben werden, FRACTAL interpoliert dann die Werte für die dazwischen liegenden Bilder. Die Parameter werden in der selben Dialogbox eingegeben, wie die Parameter von Einzelbildern^{30}. Dabei dient die linke Spalte für die Parameter des ersten, und die rechte Spalte für die Parameter des letzten Bildes. Alle Einstellungen die nur einfach vorhanden sind gelten für alle Bilder der Bildfolge, dies sind Bildgröße, Berechnungsmodus sowie die Farben. Bei den anderen Parametern kann schließlich noch die Art der Interpolation gewählt werden. Dazu dienen die Button rechts von den Parameterangaben. Gewählt werden kann lineare (0), progressive (+) und degressive (-) Interpolation. Bei linearer Interpolation sind die (absoluten) Unterschiede zwischen den Parametern zweier aufeinanderfolgender Bilder stets gleich groß, bei progressiver Interpolation nehmen sie zu und bei degressiver ab. Für den Bildausschnitt existiert noch l, hier wird so interpoliert, daß der relative Unterschied (in der Bildfläche) konstant ist (irgendwie so).

29die Popups existieren in gleicher Form (aber mit teilweise anderen Einschränkungen) auch bei den anderen Berechnungsroutinen

2.3 3d Fractale

Im Vergleich zu den normalen Fractalen mit ihrer komplizierten Farbgestaltung sind 3d Fractale fast schon einfach. 3d Fractale können nur zweifarbig erzeugt werden. Bei 3d Fractale wird die Berechnungstiefe durch die Tiefe oder Höhe der gezeichneten Punkte dargestellt. Die Parameter entsprechen weitgehend denen von normalen Fractalen. Allerdings ist die maximale Tiefe bei 3d Fractalen entsprechend der Bildhöhe und Breite begrenzt, damit das Bild immer in die Bitmap hineinpasst. Es kann auch nicht zwischen schneller und genauer Berechnungsroutine unterschieden werden (verwendet wird stets die schnelle Berechnugsroutine), und die Farbeinstellung fällt ganz weg. Eingestellt werden muß statt dessen, ob das Fractal hoch oder tief gezeichnet werden soll, und mit welchem Raster das Fractal dargestellt werden soll. Hier hilft Ausprobieren der Möglichkeiten und Anschauen der Ergebnisse glaube ich besser als langatmige Erklärungen.

2.4 freie Fractale

Für freie Fractale, d.h. Bilder mit frei definierter Rekursionsformel, kommen zu den Parametern für 2d-Fractale noch einige hinzu, die in einer eigenen Dialogbox vor den anderen Parametern eingegeben werden müssen.

Berechnungsformel

Zunächst einmal muß man natürlich die Berechnungsformel angeben. Diese ist ein beliebiger Funktionsstring, der (komplexe) Konstante, Variable, Operatoren und Funktionen enthalten kann. Konstante müssen die Form Realteil + i Imaginärteil besitzen und vorsichtshalber geklammert werden (normalerweise braucht man eh keine). An Variablen kann man zn, d.h. den momentanen Wert der Rekursionsfolge, z0 den Startwert, d.h. die komplexen Koordinaten der Bildschirmpunktes, die reelle Zahl a und die komplexe Zahl c (wie in den weiteren Parametern eingegeben) verwenden.

30Wer also die Parametereingabe für ein Bild verstanden hat, der wird auch mit Bildfolgen keine großen Probleme haben, insofern stimmt die oben gemachte Bemerkung, es käme noch schlimmer, vielleicht doch nicht so ganz.

An Operationen kann die üblichen binären Operationen +, -, *, / und ˆ (Potenz) verwenden; außerdem Klammern ( und ) und Vorzeichen -. An (komplexen) Funktionen werden unterstützt:

Re  Realteil einer komplexen Zahl
Im  Imaginärteil einer komplexen Zahl
konj komplex konjugieren
abs  Absolutquadrat einer komplexen Zahl (abs(x + iy) = x^{2} + y^{2})

(der Name ist eigentlich falsch!)

quad Quadrat
kubik dritte Potenz
sin  Sinus
cos  Cosinus
exp  Exponentialfunktion
log  Logarithmus

Anmerkung: möchte man die n-te Potenz einer Zahl zn verwenden (n ganz), so sollte man nicht znˆ n benutzen, sondern die Funktionen quad, kubik, und Produkte aus zn und ihnen – z.B. znˆ 4=quad(quad(zn)) – was wesentlich schneller berechnet wird. Beispiele für eine Berechnungsformel: Apfelmännchen: quad(zn)-z0 Juliamengen: quad(zn)+c Die Berechnungsformel wird zur Auswertung übrigens compiliert, d.h. in Maschinencode übersetzt, wenn auch nicht allzu guten. Tritt dabei ein Fehler auf, so wird dieser in einer Alertbox angezeigt, die Dialogbox kann nicht mit Ok verlassen werden.

weitere Parameter für freie Fractale

Neben der Berechnungsformel kann man auch die Abbruchbedingung und die Art des Punkte-Setzens beeinflussen. Bei der Abbruchbedingung hat man die Möglichkeit eine oder zwei relevante Größen zu bestimmen, wobei der Betrag, der Real- sowie der Imaginärteil der Folgenglieder zur Wahl stehen (die Abbruchbedingung lautet immer: Größe > Abbruch, wobei Abbruch der in den Parametern wie bei normalen Fractalen angegebene Wert ist). Wählt man zwei Größen und damit eigentlich zwei Bedingungen, so kann man noch die logische Verknüpfung (and, or oder xor) zwischen diesen wählen. Ähnlich legt man die Bedingung zum Punkte-Setzen fest. Entweder man läßt die Punkte entsprechend den Berechnungsschritten setzen – nur dann kann man bei den übrigen Parametern auch die Farbeinstellung wie bei normalen Fractalen vornehmen – oder man definiert eine Bedingung die erfüllt sein muß, damit ein Punkt gesetzt wird. Diese Bedingung entspricht der Abbruchbedingung und wird genauso festgelegt (man kann hier natürlich andere Kombinatinen wählen), allerdings werden hier Bedingungen Größe < Abbruch verwendet^{31}. Nach Verlassen der Dialogbox für frei definierte Fractale mit Ok muß man in der ganz normalen Parameterdialogbox (wie für normale Fractale) noch die übrigen Parameter angeben.

31natürlich sind nicht alle Kombinationen von Abbruch- und Punktsetz-Bedingung auch sinnvoll, das sollte man sich vorher überlegen

Und was soll das alles?

Falls sie sich dies fragen, weil sie kaum noch verstehen, was denn nu bei welcher Einstellung wie berechnet und gezeichnet wird, soll hier noch kurz erklärt werden, woher frei definierte Fractale kommen. Sie kommen von Pickover-Mengen, die im Spektrum der Wissenschaft Sonderheft Computerkurzweil IV unter dem Stichwort Biomorphe beschrieben wurden. Dabei verwendet man Berechnungsformeln z.B. vom Typ znˆ n + c (n=3,4,5…) und als Abbruch- wie als Punktsetz-Bedingung Re or Im.

3 unterstützte Optionen

Da die Fractal-Routinen gewissermaßen das Maß aller Dinge bei der Entwicklung von CHAOSultd waren^{32}, jedenfalls haben sie die möglichen Optionen vorgegeben, werden im Prinzip alle möglichen Optionen von den Fractal-Routinen auch in irgendeiner Weise unterstüzt.

3.1 Parameter anzeigen

Alle Parameter werden angezeigt. Bei freidefinierten Fractalen muß man zur Anzeige der Berechnungsformel und Abbruch- sowie Punktsetz-Bedingung in eine zweite Dialogbox (über den Button − >frPar) verzweigen.

3.2 Bild-Info anzeigen

Für die Fractal-Routinen steht ein umfangreiches Bild-Info für Einzelbilder zur Verfügung, die CHAOSultd-Routine zur Anzeige von Infos über mehrere Bilder wird unterstützt. In Einzelbild-Infos wird angezeigt: die Anzahl der Bildpunkte (nicht Pixel!) – insgesammt und als Höhe mal Breite; die Berechnungszeit in Stunden, Minuten und Sekunden, sowie die Zeit pro Zeile in Sekunden und pro Punkt in Millisekunden; die mittlere Tiefe (Zahl der Iterationen geteilt durch Anzahl der Bildpunkte) und zum Vergleich die maximale Tiefe; die Anzahl der Iterationen und die Zeit pro Iteration (in Mikrosekunden); die Anzahl der nötigen Multiplikationen, die mittlere Zeit pro Multiplikation^{33} und die sich daraus ergebende Zahl von Multiplikationen pro Sekunde. Die Angaben über Multiplikationen sind bei frei definierter Berechnungsformel nicht möglich. Für Infos über mehrere Bilder entsprechen die Angaben über Iterationen, Bildpunkte und Berechnungszeit denen der Einzelinfos.

32was nicht heißt, daß das so bleiben muß

33d.h. die Berechnungszeit geteilt durch die Zahl der Multiplikationen, tatsächlich dauert eine Multiplikation an sich weniger lang, wobei auch noch zwischen Quadratur einer Zahl und Multiplikation zweier Zahlen unterschieden werden müßte

3.3 Punktinfo

Bei normalen Fractalen kann ein Punktinfo angezeigt werden, wobei neben Koordinaten auch die Tiefe angezeigt wird; ist sie größer als die maximale Tiefe des Bildes, so wird dies durch das unendlich-Symbol (∞) markiert.

3.4 Block/Konstante zeigen

Block-Auschnitte enthalten können nur zweidimensionale Bilder. 3d Bilder können lediglich aus Ausschnitt in einem zweidimensionalen Bild angezeigt werden. Ebenso können keine Blöcke aus 3d Bildern entnommen werden. Als Konstante werden die Parameter real con (x) und imag con (y) angezeigt (in zweidim. Bildern).

3.5 neu berechnen

Beim neu berechnen von Fractalen können Abbruchbedingung, maximale Tiefe, Genauigkeit, Darstellung bzw. Farbtabelle, die Farbkodierung von 2d-Bildern, das Raster und der Modus von 3d-Bildern sowie für frei definierte Fractale die Berechnungsformel, die Abbruchbedingung und die Punktsetz-Bedingung neu vereinbart werden. In der Dialogbox muß dazu einerseits der gewünschte neue Wert einer Größe angegeben werden, der dann für alle zu neu berechnenden Bilder Verwendung findet, andererseits muß das Neu-setzen dieses Wertes durch selektieren des zugehörigen Button aktiviert werden. Die Einstellungen für frei definierte Fractale finden sich in einer eigenen Dialogbox, in die man mit dem Button fr. Param. gelangt; auch die Farbtabelle wird natürlich in der üblichen Weise eingegeben. Bilder werden grundsätzlich nur neu berechnet, wenn sich ihre Parameter geändert haben.

Teil III

die Hüpfer-Routinen

1 der Algorithmus

Hüpfer basiert auf einem Algorithmus von Barry Martin, der im Computer-Kurzweil der Zeitschrift Spektrum der Wissenschaft vorgestellt wurde. Dabei betrachtet man eine Folge von Zahlenpaaren x_{n} und y_{n} mit der folgenden Iterationsvorschrift:

x_{n+1} = y_{n} − sign(x_{n}) · \sqrt{abs (b · x_{n} − c)}
y_{n+1} = a − x_{n}

wobei a, b und c frei wählbare Parameter sind. Die Punkte (x_{n}, y_{n}) werden in einem Koordinatensystem aufgetragen, woraus sich mehr oder weniger interessante Figuren ergeben. Anders als bei Fractalen (siehe Teil II) erhält man hier eine Vielfalt von Formen nicht so sehr aus der Wahl des Koordinatenausschnittes sondern aus der Wahl der Parameter a, b und c. Das Ergebnis hängt außerdem – ebenfalls im Unterschied zu Fractalen – recht stark von der Anzahl der Iterationen ab: einerseits können ganze Bildteile unter Umständen erst nach sehr vielen Iterationen zum Vorschein kommen, andererseits können auch Strukturen bei zu vielen Iterationen durch die vielen gezeichneten Punkte wieder überdeckt werden. Man beachte, daß aufgrund des Algorithmus die Rechenzeit nicht von der Bildgröße abhängt^{34}. Berechnet man kleine Bilder, so führt das lediglich zu einer Speicherplatz- nicht aber zu einer Rechenzeitersparnis.

2 Parameter

Die Parameter sind wie üblich doppelt anzugeben – für das erste und für das letzte Bild einer Bilderfolge; berechnet man nur ein Bild, so braucht man natürlich nur die linke Spalte auszufüllen. Auch die Button für den Interpolationsmodus sind ja bekannt. Zunächst einmal muß man die drei Parameter a, b und c der Iterationsvorschrift angeben; es folgen die Startwerte für x und y sowie die Festlegung des Bildausschnittes. Aus traditionellen Gründen geschieht dies im allgemeinen nicht durch minimalen und maximalen Wert für x und y sondern durch einen Vergrößerungsfaktor (scale) und einen Offset, der die Position der Bildmitte angibt (jeweils für x und y getrennt). Man kann in der Dialogbox auch durch Anklicken des Button min/max auf die Eingabe der Minimal- und Maximal-Werte umschalten, dabei ist aber zu beachten, daß für die Interpolation bei Bildfolgen stets mit den Vergrößerungsfaktoren und Offset’s gerechnet wird (d.h. bei Verlassen der Box werden die Werte in diesen Modus umgerechnet).

34die Rechenzeit hängt hier lediglich von der Zahl der Iterationen ab, weshalb sie auch vorher abgeschätzt werden kann

Schließlich ist noch die Iterationsanzahl anzugeben und die Schrittweite, d.h. die Zahl der Iterationen nach der jeweil ein Punkt gesetzt werden soll (normalerweise setzt man nach jedem Schritt einen Punkt, d.h. Schrittweite 1). Die Eingabe der Parameter wird wie bei Fractalen durch eine Reihe von Möglichkeiten unterstützt. Zusätzlich zu den Möglichkeiten die man bei Fractalen hat, kann man mit Random die zufällige Vorbelegung der Parameter a, b und c erreichen. Den Bereich für diese Zufallszahlen kann man durch Aufruf des Hüpfer-Menüeintrages zusammen mit der CONTROL-Taste einstellen, wobei man links den minimalen und rechts den maximalen Wert angibt. Die Möglichkeit das Verhältnis von Bildbreite zu Höhe anzuzeigen fehlt. Ebenfalls Zufallszahlen für die Bildparameter a, b und c erreicht man durch den zusätzlichen (zu den von den Fractal-Routinen bekannten) Interpolationstyp r wie random. Wählt man r als Interpolationstyp, so wird nicht interpoliert sondern ein Zufallswert zwischen den zwei angegebenen Werten ermittelt (in diesem Fall ist auch bei der Berechnung eines einzigen Bildes die rechte Parameterhälfte (wenigstens teilweise) relevant). Die Vorbelegung der Parameter kann man wie üblich durch SHIFT-Klick auf den Hüpfer-Menüeintrag erreichen.

3 unterstützte Routinen

Die meisten Möglichkeiten von CHAOSultd werden unterstützt. Berechnungsabbruch ist alle 256 Berechnungsschritte möglich – wie üblich durch Drücken der ESC-Taste. Man kann dabei durch gleichzeitiges Drücken von CONTROL erreichen, daß das Bild – soweit bisher berechnet – für fertig erklärt wird, die Angabe für die Iterationsanzahl wird dann entsprechend herabgesetzt (ohne Auswirkung auf weitere Bilder etwa in einer Bilderfolge). Beim Parameter anzeigen kann man umgekehrt die Iterationsanzahl wieder erhöhen, die entsprechende Angabe in der Dialogbox ist edierbar. Man kann also die gewünschte neu Iterationsanzahl eingeben, die aber größer sein muß, als die Anzahl der bisher berechneten Iterationen (andernfalls wird die Angabe schlicht ignoriert); ein bereits fertiges Bild kann auf diese Weise wieder unfertig werden. Weiter kann man Bilderinfos anzeigen lassen, wobei es aber kein ausführlicheres Info für Einzelbilder gibt. Blockroutinen werden ebenso unterstützt. Das Neu-Berechnen von Hüpferbildern ist möglich, wobei alle Parameter (einschließlich Bildausschnitt) verändert werden können.

Teil IV

die Feigenbaum-Routinen

Feigenbaum-Diagramme können nur in 2 Farben erzeugt werden.

1 Algorithmus

Der Algorithmus von Feigenbaum-Diagrammen ist noch einfacher als der für Hüpfer. Dabei wird eine Folge von Zahlen nach der Rekursionsformel

x_{n+1} = r · x_{n} · (1 − x_{n})

gebildet (mit x_{0} ≠ 0, z.B. x_{0} = 0.5). Aufgetragen werden die Werte, die x_{n} annimmt, gegen den Parameter r, wobei man allerdings die ersten N1 Folgenglieder wegläßt. Als Ergebnis erhält man das Feigenbaumdiagramm. Warum das so aussieht wie es aussieht kann man z.B. im Spektrum der Wissenschaft Sonderheft Computerkurzweil III nachlesen.

2 Parameter

Nötige Parameter zum Plotten von Feigenbaumdiagrammen sind minimaler und maximaler Wert der Parameters r (üblicherweise zwischen 0 und 4) sowie der Folgenglieder x (natürlich nur für die Ausgabe, die Werte liegen zwischen 0 und 1), der Startwert x_{0} (ebenfalls zwischen 0 und 1), der Zeichenmodus (hoch oder quer), die Zahl der Iterationen vor dem Plotten der Punkte (z.B. 200) und die Zahl der Iterationen beim Plotten der Punkte (z.B. ebenfalls 200), wobei hier noch eine Schrittweite angegeben werden kann, d.h. die Zahl an Iterationen zwischen zwei Plots (normalerweise 1, d.h. man läßt jeden Folgenwert zeichnen). Es gibt die üblichen Interpolationstypen falls man mehrere Bilder berechnet. Ebenso stehen die üblichen Hilfsfunktionen zur Parametereingabe zur Verfügung.

3 unterstützte Routinen

Die Feigenbaumroutinen unterstützen nicht alle Möglichkeiten von CHAOSultd. Unterstützt werden die Anzeige der Parameter, die Anzeige von Bilderinfos (aber ohne eigenen Dialog für Einzelbilder) und Blockroutinen. Nicht unterstützt wird die Funktion neu berechnen. Feigenbaum-Diagramme sind einfach nicht abwechslungsreich genug um diese Routinen auch noch zu implementieren, die Routinen sollten ursprünglich ja vor allem als Beispiel für extere Routinen und deren Realisierung dienen.

Teil V

die XCHAOS-Routinen, Barnsley und Attraktoren

Die XCHAOS-Routinen erlauben es, neue Berechnungsroutinen zu realisieren, ohne daß man sich jedesmal mit den Dialogboxen zur Parametereingabe herumschlagen kann. Man kann einfach definieren, welche Parameter gebraucht werden, und die XCHAOS-Routinen passen mit diesen Daten dann einen für alle XCHAOS-Routinen gemeinsamen Eingabedialog an und übernehmen die Eingabe der Parameter. Konkret geschrieben werden muß für den neuen Fraktal-Typ dann nur noch die eigentliche Berechnungsroutine, was natürlich sehr viel weniger Arbeit darstellt. Natürlich unterliegt man dabei ettlichen Einschränkungen, wieviele Parameter möglich sind usw., dennoch stellen die XCHAOS-Routinen für nicht zu komplizierte Fraktale eine elegante Lösung dar. Die Unterroutinen zum Modul XCHAOS werden allerdings nicht mehr extern nachgeladen, sondern sind integraler Bestandteil des Moduls, man kann hier also nicht mehr auswählen, welche der Routinen man laden will, entweder man lädt alle oder – durch Entfernen des Moduls XCHAOS – garkeine. Bisher habe ich zwei Bildtypen mit XCHAOS realisiert, Barnsley-Fractale mit denen ich die Routinen entwickelt habe und seltsame Attraktoren. Beide Bildtypen sind gewissermaßen Ober-Typen für mehrere Berechnungsformeln, die aber jeweils eng miteinander zusammenhängen. Bei der Parametereingabe hat man die üblichen Hilfen, zusätzlich existiert ein Popup-Menü Voreinst., das verschiedene Voreinstellungen für die linke Parameterhälfte vorsieht. (Diese Möglichkeit wurde geschaffen, weil ich stets mehrere Bildtypen zusammengefaßt habe, und die Grundbilder teilweise verschiedene Parameter benötigen, die so miteingestellt werden können. Wenn man also die Routinen ausprobieren will, schaltet man am besten mit diesem Popup-Menü zwischen den Bildtypen um, nicht direkt mit den dafür vorgesehenen Button.) Noch eine Anmerkung zu den Button: aus technischen Gründen werden alle Button stets wie Radio-Button dargestellt (also mit Kreis), das heißt aber nicht automatisch, daß sie auch welche sind. Von den XCHAOS-Routinen werden die Funktionen von CHAOSultd unterstützt, mit Ausnahme des Neuberechnens von Bildern (kommt noch, irgendwann).

1 Barnsley-Fractale

Die Formeln für Barnsley-Fractale wurden aus dem PC-Programm Fractint entnommen, sie wurden von M. Barnsley entdeckt (oder erfunden, wie immer man will). CHAOSultd kennt vier verschiedene Barnsley-Fractale, eins mehr als Fractint, weil die Beschreibung und die Realisierung im Programm eines der Fractale in Fractint irgendwie nicht übereinstimmt (so ganz verstehe ich gerade auch nicht, was da eigenlich los ist, was ich berechne und was das mit der Berschreibung von Fractint zu tun hat; einerlei, die Routinen sind jetzt wie sie sind. CHAOSultd rechnet jedenfalls so wie unten angegeben). Von jeder dieser vier Varianten gibt es zwei Versionen: Mandelbrot- und Juliamengen. Generell entspricht die Berechnung der Bilder derjenigen von üblichen Mandelbrot- und Juliamengen. Damit ist auch der Unterschied zwischen den beiden Versionen klar: bei Julia-Versionen gibt es eine globale, d.h. für alle Punkte des Bildes gleiche Konstante c, die man in den Parametern angibt, bei den Mandelbrot-Versionen wird diese Konstante für jeden Punkt mit dessen Koordinaten initialisiert. Dafür werden in der Mandelbrot-Version als Startwert für die Iteration nicht die Koordinaten sondern die Parameter verwendet. Iteriert wird in den einzelnen Bildtypen (1-3 und I) wie folgt (z_{n} und c sind komplexe Zahlen, mit ℜc ist der Realteil, mit ℑc der Imaginärteil von c gemeint):

• Typ 1 (entspricht Beschreibung, falls mit ’modulus’ das Absolutquadrat gemeint ist):

z_{n+1} = (z_{n} − 1) · c falls ℜz_{n} ≥ 0
z_{n+1} = (z_{n} + 1) · c̄ = (z_{n} + 1) · |c|^{2}/c sonst

• Typ I (entspricht Algorithmus in Fractint):

z_{n+1} = (z_{n} − 1) · c falls ℜz_{n} ≥ 0
z_{n+1} = (z_{n} + 1) · c sonst

• Typ 2:

z_{n+1} = (z_{n} − 1) · c falls ℜz_{n} · ℑc + ℜc · ℑz_{n} ≥ 0
z_{n+1} = (z_{n} + 1) · c sonst

• Typ 3:

z_{n+1} = (ℜz_{n}^{2} − ℑz_{n}^{2} − 1) + ı · (2ℜz_{n} · ℑz_{n}) falls ℜz_{n} > 0
z_{n+1} = (ℜz_{n}^{2} − ℑz_{n}^{2} − 1) + ℜc · ℜz_{n} + ı · (2ℜz_{n} · ℑz_{n} + ℑc · ℜz_{n}) sonst

In den Parametern gibt man wie bei Fractalen den Bildausschnitt an, also den minimalen und maximalen Wert des Real- und Imaginärteils, die hier aber mit minimalem und maximalem x- bzw. y-Wert bezeichnet werden. Es folgen Real- und Imaginärteil der Konstante c (bzw. des Startwertes z_{0}), die Abbruchbedingung und die maximale Tiefe (letztere wiederum anlog zu den Parametern bei Fractalen). Schließlich wählt man noch, welchen Bildtyp (1, I, 2 oder 3) und welche Version (Juliamenge oder Mandelbrotmenge) man wünscht. Außerdem gibt es schnelle und exakte Berechungsroutinen, ebenfalls wie bei Fractalen; allerdings ist die Bilderzeugung von Barnsley-Fractalen generell langsamer als bei Fractalen.

2 seltsame Attraktoren

Unter (seltsame) Attraktoren sind mehrere Kurven (d.h. Lösungen von Differentialgleichungen) bzw. Punktmengen (analog zum Hüpferalgorithmus) zusammengefasst. Auch diese Bildtypen wurden dem Programm FractInt – bzw. seiner Beschreibung – entnommen. Attraktoren heißen die Dinger, weil sich die Kurven bzw. Punkte irgendwann nur noch in bestimmten, eigenartig geformten (deshalb ,seltsam’), Raum- bzw. Flächenbereichen finden. Auf die Details soll hier (so unbefriedigend das sein mag, aber zu allgemeinen Theorie-Erklärungen habe ich jetzt einfach keine Lust) nicht weiter eingegangen werden. Wer nicht weiß, das eine Differentialgleichung (DGL) ist, der muß sich eben ohne Verständnis an der Kurve freuen oder es sein lassen. Im einzelnen hat man:

• Lorenz-Attraktor

dem Lorenz-Attraktor liegt das DGL-System

ẋ = −ax + ay
ẏ = bx − y − zx
ż = −cz + xy

zugrunde, wobei a, b und c anzugebende Parameter sind

• Rössler-Attraktor

ebenfalls ein DGL-System:

ẋ = −y + z
ẏ = x + ay
ż = b + xz − cz

• Pickover-Atttrakor

keine DGL, sondern eine diskrete Punktfolge mit

x = sin(ay) − z cos(bx)
y = z sin(cx) − cos(dy)
z = sin(x)

(scheint nicht so recht zu funktionieren, aber ich weiß auch nicht, wie die Bilder überhaupt ausschauen sollen)

• Henon-Attraktoren

auch eine Punktmenge, diesmal nur noch zweidimensional

x = 1 + y − ax^{2}
y = bx

• der Gingerbreadman

x = 1 − y + |x|
y = x

(die Parameter a und b werden als Startwert für x und y verwendet)

Alle diese Routinen wurden zusammengefaßt, wodurch Parameter teilweise überzählig sind. Bei den 3d-Routinen (Lorenz, Rössler und Pickover) muß man sich für ein Darstellungsebene entscheiden, d.h. es gibt keine 3d-Darstellung, sondern es werden nur zwei der drei Koordinaten dargestellt. Bei den 2d-Routinen ist die Darstellungsebene natürlich immer die xy-Ebene. Bei der Bezeichnung minimale/maximale x/y-Werte (oben in den Parametern) bezieht sich das x/y auf den Bildschirm, nicht auf die Koordinaten, d.h. wählt man die zx-Ebene, so ist minimales x der kleinste z-Wert, der ganz links am Bildschirm angezeigt wird (usw.). Die Differentialgleichungs-Systeme werden auf die allerprimitivste Weise, also durch Diskretisierung (kein Runge-Kutta oder sonst was besseres) gelöst, wobei der Zeitschritt eingestellt werden kann (dt). Je kleiner dieser ist, des genauer die Lösung, desto länger aber auch die Berechung. Neben der Größe des Zeitschrittes gibt man noch die Zahl der Zeitschritte (bzw. Iterationen) an. Die Startwerte von x, y und z für die Berechnung sind (außer beim Gingerbreadman) fest vorgegeben: x = y = z = 1.0.