Korseby Online - Fraktale
Computerberechnete Fraktalbewegung
Bei noch so vielen Dingen schein es ungeklärt, doch hier ist alles anders. Unglaublich phantastisch plastische, scheinbare Bewegung von computerberechneten Fraktalgebilden, mit einer Unmenge an Farben und Formen. Wer es nicht glaubt, kann es an wenigen Zeilen Quellcode nachvollziehen..
Index
- Allgemeines
- Fraktal #1
- Fraktal #2
- Fraktal #3
- Fraktal #4
- Fraktal #5
- Fraktal #6
- Fraktal #7
- Die Grafikunit MAIN
Allgemeines
Die Programme wurden mit Turbo Pascal 6.0 für DOS geschrieben. Jedoch ist es für erfahrene Programmierer recht einfach, den Sourcecode in andere Sprachen, wie z.B. C, Java usw. zu portieren.
In der benutzten Unit MAIN.PAS, wird ein Grafikkartentreiber angesprochen (VGAVESA.BGI), der für die nötige Unterstützung der Grafikmodi sorgt. Generell kommt man aber auch mit entsprechenden Änderungen in der Unit ohne ihn aus.
Tastenbelegungen und Funktionen: Die Geschwindigkeit der Veränderung der Farben kann man mit [-] und [+] regeln. Das Programm wird mit [ESC] beendet.
Fraktal #1
Download Fraktal #1
View Screenshot (223 KB)
Download Sourcecode (2 KB) Download DOS-EXE (23 KB) |
for x:=0 to 639 do
for y:=0 to 479 do
putpixel(x,y,abs(((sqr(y-240)+sqr(x-320))shr j mod 127)-63)+16);
Für die Bewegung sorgt dann das Zusammenspiel aus 3 weiteren, relativ kleinen Prozeduren. Diese funktionieren wie folgt: Sie definieren eine simple, aus 256 Farbtönen bestehende, RGB-Farbpalette und rollen dann die einzelnen Farbeinträge nach einem bestimmten, hier definiertem, Muster.
Fraktal #2
Download Fraktal #2
View Screenshot (59 KB)
Download Sourcecode (2 KB) Download DOS-EXE (23 KB) |
for x:=0 to 639 do
for y:=0 to 479 do
putpixel(x,y,x*y div j);
Für das Zusammenspiel, das letztendlich die Bewegung ergibt, sind, wie im obigen Fraktal, die gleichen 3 Prozeduren zuständig. Nur ergeben sie mit dieser Funktion ein völlig anderes Muster, Bild und einen Eindruck, der eine scheinbare Bewegung zeigt.
Fraktal #3
Download Fraktal #3
View Screenshot (32 KB)
Download Sourcecode (4 KB) Download DOS-EXE (7 KB) |
Die Funktion, die für die grafische Darstellung verantwortlich ist, berechnet sich folgendermaßen:
for c:=0 to 181 do
for k:=0 to 319 do
mem[$A000:k+320*(c+1)]:=round(k+c*c/60);
Es wird ersichtlich, daß in diesem Programm nicht mit den von Pascal vorgegebenen Befehlen programmiert wird, sondern über DOS-Interrupts und direktes Ansteuern der Grafikkarte. Damit wird eine gewisse Geschwindigkeitssteigerung erzielt.
Fraktal #4
Download Fraktal #4
View Screenshot 1 (123 KB)
View Screenshot 2 (17 KB) Download Sourcecode (4 KB) Download DOS-EXE (11 KB) |
Auch dieses Fraktal umgeht die pascaleigenen Prozeduren und Funktionen. Es benutzt wieder die DOS-Interrupts, die speziell angesteuert werden. Für Nicht-DOS-Systeme wird die Portierung dieses Fraktals natürlich schwer werden, aber ist letztendlich nicht unmöglich.
Fraktal #5
Download Fraktal #5
View Screenshot (148 KB)
Download Sourcecode (5 KB) Download DOS-EXE (29 KB) |
Auch diese Funktionen bestehen allesamt aus Sinus- und Cosinusberechnungen. Im Gegensatz zu den anderen Fraktalen sind sie aber etwas komplizierter. Turbo Pascal bietet zum Glück eine sehr einfache Technik, womit sich mathematische Berechnungen darstellen lassen können.
Das fünfte Fraktal benötigt keine spezielle Unit mehr. Alle Prozeduren sind im Hauptprogramm integriert. So wird die Übersichtlichkeit erhöht. Zum ersten Mal kann der Benutzer auch einen speziellen Grafikmodus wählen. Man ist nun nicht mehr nur auf 320x200 Pixel-Auflösung begrenzt, sondern kann maximal die Fraktale mit 1280x1024 Pixel berechnen lassen. Eine Auswahl findet am Anfang des Programmes statt.
Fraktal #6
Download Fraktal #6
View Screenshot (59 KB)
Download Sourcecode (4 KB) Download DOS-EXE (28 KB) |
Die meisten Funktionen wurden diesmal mit dem Quadrat aus x bzw. y errechnet. Eine Funktion ist schon sehr kompliziert und wird mit Hilfe von arctan und pi berechnet. Auf langsamen Computern ist deshalb die Darstellung auch nicht mehr ganz so schnell, aber ab Pentium und aufwärts ist das Bild sehr fix aufgebaut.
Dieses sechste Fraktal benötigt keine Unit mehr. Alle Funktionen und Prozeduren sind im Quelltext bereits enthalten. Es kommt auch wieder der SVGA-Treiber von Borland Pascal 7.0 zum Einsatz, der ebenfalls mit dem Free Pascal Compiler angesprochen werden kann.
Fraktal #7
Download Fraktal #7
View Screenshot (58 KB)
Download Sourcecode (5 KB) Download DOS-EXE (29 KB) |
Das Fraktal baut auf einer Sinus- bzw. Cosinusfunktion auf. Mit dieser wird das Fraktal, mit einer recht aufwendigen Farbpalette, auf den Bildschirm gezeichnet. Sie sieht folgendermaßen aus:
for x:=0 to getmaxx do f_x[x]:=trunc((sin(pi*x/160)+1)*127.5);
for x:=0 to getmaxy do f_y[x]:=trunc((sin(pi*x/100)+1)*127.5);
Zu sehen ist aber nur die Sinusfunktion. Es versteht sich übrigens fast von selbst, daß man schon schnellere Computer braucht, um die vielen Veränderungen darzustellen. Ein 386er reicht nun nicht mehr aus - Ein Pentium sollte aber genügen. Das Programm läuft zwar noch auf 386er, allerdings sehr langsam.
Auch das letzte der Fraktale benötigt keine Unit mehr. Dafür aber den SVGA-Grafikkartentreiber von Borland (ist enthalten). Man kann ebenfalls wie in den letzten Fraktalen die Grafikauflösung wählen. Aber je höher die Auflösung, desto langsamer das Fraktal.
Die Grafikunit MAIN
Download MAIN
Download Sourcecode (2 KB)
Download compiled Unit (2 KB) Download video driver vgavesa.bgi (5 KB) Download video driver svga256m.bgi (8 KB) |
Insbesondere enthält diese Unit Prozeduren für die Grafiksteuerung, also Initialisation des Grafikmodus, eine Delayroutine (weil bekanntlich die von Pascal fehlerhaft ist und nicht auf jedem Computer eine gleiche Verzögerungsrate vollbringt) und die Hauptfunktion für die Änderung der Paletteneinträge.