Foreign users: an english version of this text and of the program's resource will be made available if there is sufficient demand. Please drop me a note, e.g. on Atari Benelux BBS (Holland 03473-77584), or on the address below. MANDELBROT/JULIA-FRACTAL PLOTTER R 2.02. ======================================== Het programma MNDL_INT.PRG tekent Mandelbrot- en Julia-fractals (wiskundig berekende plaatjes, waarop 'eindeloos' kan worden ingezoomd) op het scherm. Het programma is tamelijk uitgebreid met een menubalk, save- en laadfunkties, uitwisselbaarheid tussen schermresoluties, muisbesturing en een Undo-funktie. De plaatjes worden in een steeds fijner wordend raster opgebouwd zodat al snel een indruk van het geheel wordt verkregen. Met het bekende Alt-Help kunnen de plaatjes op een printer worden afgedrukt. Beginnen. -------- Nadat het programma is gestart begint het na een melding direkt te tekenen. Als het tekenen klaar is verschijnt een formulier met gegevens over het plaatje; nadat dit is verwijderd blijft het plaatje gewoon in beeld. Om ergens op in te inzoomen kan (ook als het plaatje nog niet klaar is) door eenmaal de muisknop te bedienen de muispijl terug worden geroepen, waarna een kader om het gewenste gedeelte kan worden getrokken. Met de spatiebalk kan het menu van het programma worden opgeroepen. Bij het programma worden een paar demonstratiefiles (met extensie .MBP) geleverd, die een indruk geven van de plaatjes die kunnen worden gemaakt. Deze kunnen met de optie Laad file... op de gebruikelijke worden ingelezen, waarna het gewenste plaatje wordt getekend. Een kort overzicht van de beschikbare commando's krijgt U als U de Help- toets indrukt (deden meer programma's dat maar...). Verder kunt U de mogelijk- heden uit de menubalk aflezen, die U met de spatiebalk kunt oproepen en verwijderen. Overzicht van het programma. --------------------------- Het programma MNDL_INT (d.w.z. Mandelbrot met integer berekeningen) is geschikt voor elke Atari-resolutie; de lage kleuren-resolutie en de hoge monochrome geven op de ST de beste resultaten. Ook de schermresoluties en - kleuren van de STE en de TT worden ondersteund. Het programma vraagt niet meer dan 80 K geheugen plus ruimte voor een extra scherm en moet dus op elke Atari (Mega) ST/STE/TT kunnen werken. In principe moet het ook op de Falcon zonder aanpassing kunnen werken. Er is veel moeite gedaan om de snelheid van het programma zo hoog mogelijk te krijgen; waarschijnlijk is dit programma nu een van de snelsten op de ST en TT. Door de benodigde berekeningen zijn tekentijden van 1 tot 60 minuten per plaatje op een ST echter geen uitzondering. Door gebruik te maken van geheel- tallige berekeningen in zowel 16- als 32-bits nauwkeurigheid zijn de rekentij- den bij niet te hoge vergroting zeer beperkt; het programma kiest automatisch de snelste rekenroutine die geschikt is. Vooral floating point coprocessors, maar ook snellere processors kunnen deze rekentijd beperken; een 68881- uitbreiding van de ST wordt automatisch gebruikt, en de 68882 van de TT kan met de speciale coprocessorversie van het programma worden benut. Er is een speciale geoptimaliseerde 32-bits rekenroutine voor de 68020 en hoger opgenomen waarop automatisch wordt overgeschakeld. Het plaatje dat getekend wordt is een weergave van een tweedimensionale funktie, die dus aan elk punt van het vlak een waarde toevoegt. Deze waarde wordt weergegeven als een kleur of een grijstint. Om de funktiewaarde te krijgen moet een berekening met de koordinaten van een punt worden herhaald tot de uitkomst van deze berekening een bepaalde grens overschrijdt; het aantal herhalingen is dan de funktiewaarde van dat punt. Omdat bij heel wat punten van het vlak die grenswaarde nooit wordt bereikt moet er na een bepaald aantal herhalingen altijd worden afgebroken om niet eindeloos te blijven rekenen; dit aantal is in het programma instelbaar. Het aardige van dit soort plaatjes (fractals) is dat er eindeloos op ingezoomd kan worden waarbij vaak een bepaald patroon steeds weer terugkomt. Wiskundig is heel interessant dat de 'zwarte' gebieden allemaal met elkaar verbonden zijn; de omtrek van dit totale gebied wordt steeds groter naarmate verder wordt ingezoomd. Daarom wordt deze omtrek beschouwd als iets wat tussen een lijn (‚‚n dimensie) en een vlak (twee dimensies) inligt, en dus een gebroken dimensie ('fractal dimension') heeft. Voor meer informatie zie het "wiskundig aanhangsel" en de uitgebreide litera- tuur op het gebied van fractals. Als een plaatje helemaal klaar is verschijnt een formulier met een melding van het type fractal, de tekentijd, de gebruikte berekeningsmethode en de begrenzingen van het getekende gedeelte van de fractal. Na het verwijderen van dit formulier kan het plaatje rustig worden bekeken. De grenzen van het in eerste instantie getekende gedeelte (het 'domein' van de funktie) zijn zo gekozen dat alle interessante informatie in beeld verschijnt (buiten de getoonde cirkel is verder alles 'wit'). Om in te zoomen kan de muispijl worden teruggehaald met een druk op de linker muisknop, of de toets Escape. Door bij het inzoomen het kader leeg te laten of achteraf de Undo-toets te gebruiken kan de oude situatie worden hersteld (Let wel: Undo kan maar EEN stap teruggaan!). Om uit te zoomen kan Undo worden gebruikt (naar de vorige situatie), Ctrl-N (naar de startsituatie), of kan het gewenste domein in het formulier invullen. In het laatste geval worden de X- en Y-waarden eventueel bijgesteld om de verhouding kloppend te houden; U hoort dan een 'ping' en ziet het formulier nogmaals, maar met de gewijzigde waarden. Het parameter-formulier kan tijdens het tekenen met Ctrl-I worden opgeroe- pen. In dit formulier kan ook het afbreekpunt voor de berekening worden gewijzigd (hoe lager hoe sneller en hoe minder details). Een redelijke waarde hiervoor is ergens tussen 50 en 200; het programma kan zonodig veel verder gaan, maar de tekentijd wordt dan wel erg groot. Er kan worden omgeschakeld tussen de Mandelbrot-fractal en de verwante Julia-fractal-'familie' met de Tab-toets. Het verband tussen beide fractals is daarbij dat het midden van het getoonde scherm van de Mandelbrot-fractal de parameter is van de Julia fractal. Ook op deze Julia-fractal kan weer worden ingezoomd. Het info-formulier geeft bij een Julia fractal ook de Julia- parameter aan, die natuurlijk ook kan worden gewijzigd. Er moet rekening mee worden gehouden dat het programma om sneller te werken pas aan het einde van een getekende regel toetsen verwerkt; tegen het einde van het tekenen van een plaatje is dit duidelijk merkbaar. Kleuren. ------- Bij gebruik van een kleurenmonitor kunnen de kleuren voor de plaatjes met het standaard Atari Control Panel (CONTROL.ACC) worden ingesteld. Een regen- boogverloop of overvloeiende kleuren geven vaak hele mooie resultaten. Bij het instellen van kleuren moet erop worden gelet dat de eerste kleur (kleur 0, normaal wit) wordt gebruikt voor de achtergrond van de dialoogboxen, en de tweede kleur (kleur 1, normaal zwart) voor de tekst van de dialoogboxen. Kleur 0 wordt gebruikt voor het buitenste gebied en voor de schermrand. Kleur 1 wordt gebruikt voor die gebieden waarin de berekening is afgebroken en wordt normaal verder overgeslagen (als de kleuren op zijn wordt weer van voren af aan begonnen). Het aangemaakte palet wordt met het plaatje opgeslagen, maar kan ook apart worden bewaard met Alt-S (met extensie '.CLR'). De zo aangemaakte paletten kunnen met Alt-L weer worden ingeladen. Helaas kunnen ingeladen paletten niet met het Control Panel worden gewijzigd, omdat het Control Panel bij zijn oproep alles terugzet op de oorspronkelijke desktopkleuren; dit werkt wel goed met het nieuwe Extensible Control Panel (XCONTROL.ACC) van Tos 2.xx / 3.xx. Bij gebruik van een monochrome monitor worden verschillende vulpatronen gebruikt om grijstinten te verkrijgen; de elementen van het beeld zijn dan 2 * 2 pixels groot. Wanneer de gebieden met gelijke waarden slechts klein zijn valt het onderscheid tussen de verschillende grijstinten weg, maar is het resultaat wel aangenaam om te zien. Op kleurenmonitoren kan het palet doorlopend worden verschoven, waardoor een aardig 'vloeistofdia'-effekt ontstaat (hey man, helemaal te waaaauw ...). Dit wordt gestart met de '+' of '-' toets. Tijdens het schuiven kan een extra hulp-formulier worden opgeroepen met de Help-toets. Met Return wordt het nieuwe palet geaccepteerd in het programma, met Esc wordt naar het voorgaande palet teruggekeerd. De rotatietijd kan worden veranderd met de pijltjestoetsen omhoog en omlaag. Bij het stoppen kan het verschoven palet worden overgenomen (Return) of kan het oorspronkelijke palet worden hersteld (Esc). Bij het starten van het programma kan automatisch een kleurpalet worden geladen. Dit palet moet de naam 'DEFxxxxx.CLR' hebben, waarbij xxxxx het aantal kleuren is waarvoor het palet is bedoeld. Het palet moet in dezelfde folder staan als het programma. Opslaan en inladen. ------------------ De getekende plaatjes kunnen op schijf worden bewaard om ze later nog eens te kunnen bekijken of ze in andere programma's te gebruiken. Daarbij wordt ook een file met de bijbehorende parameters aangemaakt (met extensie '.MBP'). Dit geldt ook voor niet-voltooide plaatjes; deze worden na inladen verder getekend. Het programma kan alleen plaatjes inladen die met dezelfde resolutie zijn opgeslagen, anders wordt het plaatje vanuit de parameterfile opnieuw opgebouwd (op deze manier kan een bepaald gebied gemakkelijk in een andere resolutie worden teruggehaald). Het is handig om aparte folders of diskettes te gebruiken voor de verschillende resoluties; de plaatjes kunnen dan verder met dezelfde naam worden opgeslagen. Normaal gebruikt het programma het GEM X-Image (.IMG) formaat, omdat dit voor alle beeldschermformaten kan worden gebruikt. Verder kan het formaat van het bekende tekenprogramma Degas worden gekozen voor ST- en TT-resoluties, zowel normaal als gecomprimeerd (.PIx en .PCx). Dit gebeurt in het 'Algemene opties' formulier. De meeste andere programma's kunnen de plaatjes zo direkt inlezen, en anders kan met een van de vele plaatjes-konverteringsprogramma's het formaat worden omgezet. In First Word Plus kunnen ST monochrome .IMG plaatjes in elk geval gebruikt worden (ze moeten daarvoor in dezelfde folder als de First Word Plus file staan). Het desktop publishing programma Calamus accepteert ook de kleuren .IMG plaatjes. Afdrukken. --------- Het programma beschikt over een speciale printerroutine voor Epson- compatible printers, die een betere (maar monochrome) afdruk geeft dan de screendump van Alt-Help. De routine drukt het scherm namelijk bijna 1:1 af, zodat elk pixel even groot wordt afgedrukt (bijna alle Epson-compatible printers kunnen dit aan). Alleen pixels met kleur 1 (normaal zwart) worden afgedrukt, dit geldt ook in kleur! Voor de normale kleur-afdrukken kan alsnog Alt-Help worden gebruikt; het printertype moet daarvoor via het Control Panel worden ingesteld. Met de Control Panel optie 'draft'/'final' kan de afdrukkwa- liteit worden gekozen, terwijl met 'single' of 'feed' kan worden ingesteld op resp. A4 vellen en 12" kettingpapier; ook de poortinstelling wordt gevolgd (serieel of parallel). De printerroutine is vooral goed te gebruiken voor de zwart/wit plaatjes met rasters, die ook op kleurenschermen kunnen worden gemaakt (zie kleur-opties). Ook is het aardig om in de plaatjes kleur 1 wŠl te gebruiken (ook weer in kleur-opties), waardoor her en der pixels op het papier verschijnen. De animatie mogelijkheid. ------------------------ Het programma is in staat reeksen plaatjes te maken die achter elkaar op het scherm getoond een soort film kunnen vormen. Het programma kan dit vertonen echter niet zelf, hiervoor is een apart programma nodig. In het public domain zijn heel wat van dergelijke programma's beschikbaar (onder de naam 'picture viewer' of 'slide show') en een variant voor de TT-resoluties van dit programma is in voorbereiding. Voor het aanmaken van zo'n reeks kan het beste als volgt te werk worden gegaan: 1. Sla een plaatje op dat als begin van de reeks kan dienen. Bedenk hierbij dat de laatste 3 karakters van de filenaam (voor de punt) als teller worden gebruikt voor de reeks, dus bijv. FNAAM000.PI3, FNAAM001.PI3 etc. Tijdens het maken van de animatie worden alle benodigde files zonder navraag aangemaakt en worden bestaande zonodig overschreven! 2. Zoom (een aantal keren) in tot een plaatje dat als einde van de reeks kan dienen. Het is handig (maar niet noodzakelijk) om dit plaatje ook te bewaren. 3. Laad het in 1. opgeslagen plaatje weer in als U meerdere keren hebt ingezoomd. In elk geval moet na 3. met Undo geschakeld kunnen worden tussen het eerste en het laatste plaatje van de reeks. 4. Kies in de menubalk of met de toetsen de optie 'animatie'. Er verschijnt een dialoogbox waarin U het totale aantal plaatjes kunt invullen. Na OK wordt het aanmaken gestart, met Cancel kunt U zich nog bedenken. 5. Als het laatste plaatje is getekend en opgeslagen wordt dit gemeld. Als de disk vol is wordt dit uiteraard ook gemeld; de animatie moet dan nog handmatig worden afgebroken. Tijdens het maken van een animatie zijn alle funkties beschikbaar; bij elke toetsindruk wordt eerst het nummer van het plaatje en het totale aantal gemeld. Er moet wel op worden gelet dat zodra een plaatje klaar is dit zonder meer wordt opgeslagen; bij twijfel dus liever de zaak met rust laten. Eventueel kan met wat handigheid een afgebroken animatie worden voortgezet met het laatste en het laatst getekende plaatje door het gewenste aantal te verlagen. Er moet rekening mee worden gehouden dat afrondingsfouten (voornamelijk bij de 16- en 32-bits berekeningen) ook tussen de plaatjes bestaan en soms bij de animatie hinderlijk zichtbaar worden; zonodig kan een nauwkeuriger rekenmethode worden gekozen. Een interessant effekt geeft het wanneer dezelfde uitsnede met verschillende rekendiepte achter elkaar worden getoond; het plaatje 'groeit' dan als het ware op het scherm. Technische informatie. --------------------- MNDL_INT is in de programmeertaal C geschreven, met assembler subroutines voor de berekeningen. Het programma is resolutie-onafhankelijk en moet dus op elke ST-compatible computer kunnen worden gebruikt. Normaliter gebruikt het programma Line-A routines voor het tekenen, omdat deze een stuk sneller zijn dan de VDI-routines; er wordt nooit direkt in het beeldschermgeheugen geschre- ven. Bij gebruik van exotische schermresoluties wordt teruggeschakeld naar alleen VDI-routines. Het gebruik van een beeldversneller kan de tekentijd vaak nog behoorlijk bekorten; het programma werkt in elk geval samen met Turbo-ST of NVDI 2.01. De pure tekentijd is bij ingewikkelder plaatjes echter onbelangrijk ten opzichte van de rekentijd. Ook zou het programma op een TT in het snellere TT-RAM geladen moeten kunnen worden; dit is echter nog niet getest. Het werkt in ieder geval wel met de nieuwe multitasking versie van The Operating System, MultiTos. Het nut van de integer-berekeningen kan worden ge‹llustreerd met de volgende cijfers voor een redelijk ingewikkeld plaatje op de TT: 16-bit berekening: 38.06 s 100 % 32-bit berekening: 57.93 s 152 % floating point: 41:14.83 s 6502 % coprocessor 68882: 1:54.08 s 300 %. Het is dus duidelijk dat er heel veel tijd wordt gewonnen door de integer- berekening (hier 65 keer zo snel), en dat ook een floating point coprocessor het ertegen moet afleggen (in dit geval 3 keer trager). De afwijkingen die bij de integer-berekeningen optreden zijn meestal heel beperkt: vaak zijn de geleverde beelden volkomen identiek, soms wijken ze door aanpassing van de schaal en afrondingsfouten wat meer af. Voor elke iteratie zijn 3 vermenigvuldigingen en 5 optellingen nodig. Bijvoorbeeld: bij een helemaal 'zwart' plaatje, 150 iteraties en 320 x 200 beeldpunten (ST low of ST high) komt dit dus neer op 28.800.000 vermenigvuldi- gingen en 48.000.000 optellingen... Zelfs bij ruim 100.000 vermenigvuldigingen per sekonde (16-bits berekeningen op een Atari ST) kost dit dus behoorlijk wat tijd. Uiteraard wordt het worteltrekken uit de formule (zie wiskundig aanhang- sel) achterwege gelaten, in plaats daarvan wordt met het kwadraat van de limiet vergeleken. Het programma is (in ST resoluties) ook te gebruiken met het (shareware) programma BIGSCREEN; hiermee kunnen de plaatjes veel groter worden getekend en bovendien ook op dat formaat afgedrukt worden. Bigscreen laat op normale schermgrootte een uitsnede van het ingestelde grote scherm zien, waarover met de muis kan worden gescrolld. Het werken ermee vergt wel wat handigheid, omdat bijvoorbeeld invulformulieren niet altijd in de aktuele uitsnede zichtbaar zijn. De afdrukroutine is momenteel nog beperkt tot 640 pixels breedte, maar de hoogte kan voor 12" papier tot zo'n 800 pixels worden opgevoerd. Een beperking van First Word Plus: dit programma accepteert plaatjes hooguit tot 500 pixels vertikaal. Bij schermresoluties die niet door Degas worden gebruikt (bijv. TT resoluties) wordt in .PIx- of .PCx-mode een Degas-achtig opslagformaat gebruikt (resolutie-code, kleurentabel van minstens 16 posities gevolgd door de beeld- schermgegevens); deze plaatjes kunnen dus niet in Degas worden ingeladen! Dit geldt ook voor afwijkende resoluties zoals die met Bigscreen of Overscan worden gekregen. Bij niet-ST resoluties is in het gecomprimeerde Degasformaat afgezien van de 40-byte compressielimiet die Degas hanteert, om een betere compressie te krijgen. Overigens zijn de gecomprimeerde plaatjes vaak slechter te comprimeren met de gebruikelijke datacompressieprogramma's dan niet-gecomprimeerde (bijv. LHarc op NAAM.PCx losgelaten geeft een +/- 10% groter resultaat dan op NAAM.PIx, hetzelfde geldt voor .IMG files). De parameterfiles bevatten alle gegevens die het plaatje beschrijven en de gegevens waarmee het tekenen kan worden voortgezet. De parameterfiles kunnen ook afzonderlijk in het programma worden geladen, waarbij het tekenen dan zonodig van voren af aan begint. Deze files vormen (samen met het palet) zodoende de hoogste compressie die voor de plaatjes mogelijk is, en ze zijn bovendien resolutie-onafhankelijk. De decompressie kost alleen wat tijd ... De paletfiles worden in het volgende formaat opgeslagen: 1 long magic word 'VDIP' (VDI palet) n long gecomprimeerde VDI-paletentry, in Pure C opgebouwd als bitveld: typedef struct { red : 10; /* 0 .. 1000 */ gr_h: 5; gr_l: 5; /* hier begint het lo-word */ blue: 10; } PALETTE_ENTRY; Het aantal entries is afhankelijk van het aantal VDI-kleuren bij de gekozen resolutie. Het programma leest zoveel entries als het kan gebruiken, en klaagt niet als er te veel in de file staan. De resourcefile bevat alle tekst uit het programma waardoor het relatief eenvoudig is om het programma te vertalen. Wel moet de structuur van de resource intakt blijven en moet erop worden gelet dat de C-conversiespecifika- ties (%s, %3d etc.) op hun plaats blijven en evenveel ruimte in de strings houden. De default extensies van de parameterfiles en de paletfiles zijn hier ook in opgenomen zodat die desgewenst gewijzigd kunnen worden. Het programma kan worden ge‹nstalleerd als applikatie voor .MBP files, zodat een plaatje direkt kan worden ingeladen en evt. verder getekend. Om het default palet te kunnen vinden moeten daarbij de instellingen 'Default dir: application' en 'Parameter: Full path' worden gemaakt. Er zijn de volgende commandline opties beschikbaar: -v: alleen VDI routines gebruiken, voor het geval een VDI-driver geen afwijkende waarden van beeldgrootte of resolutiecode levert; -b: geen bel-geluid bij voltooien plaatje; -f: geen formulier " " " ; -s: extra beveiligingen uit. Tenslotte. --------- Dit programma is voor iedere ge‹nteresseerde geschreven en mag alleen gratis of tegen materiaalkosten, kompleet en onveranderd, worden verspreid. Het is enerzijds een poging om een 'net' resolutie-onafhankelijk GEM-programma te schrijven voor de Mandelbrot- en Julia-fractals, en anderzijds bedoeld om de snelheid van de Atari computers te demonstreren, met name in vergelijking met Fractint op de PC (die het met glans doorstaat!). Het totale pakket omvat: MNDL_INT.PRG (of MNDL_FPU.PRG) het programma MNDL_INT.RSC de resource file MNDL_INT.TXT deze tekstfile DEF4.CLR standaard kleurpalet 4 kleuren DEF16.CLR standaard kleurpalet 16 kleuren BLUES16.CLR kleurpalet 16 kleuren RAINBOW.CLR " " " PINK.CLR " " " SPIDER.MBP demofile (alleen parameters) SPIRAL.MBP " SPHERES.MBP " PEACOCK.MBP " en bij MANDELFP.PRG ook: V1CONVRT.TTP konversieprogramma voor V 1.xx parameterfiles. DEF256.CLR standaard kleurpalet 256 kleuren FIRESTRM.CLR kleurpalet 256 kleuren VOLCANO.CLR " " " CHROMA.CLR " " " NEON.CLR " " " BLUES.CLR " " " De 256-kleuren paletten zijn gekonverteerd uit het MS-DOS public domain programma Fractint. Mocht het programma onverhoopt niet zoals beschreven werken dan kunt U daarover naar onderstaand adres schrijven. Een gedeeltelijke source van dit programma (geschreven in Pure C van Application Systems Heidelberg, de opvolger van Turbo C) is samen met de laatste versie ervan bij de auteur verkrijgbaar tegen een vergoeding van f 25.-- (incl. diskette en verzendkosten) op giro 4443524 t.n.v.: R.J. Ridder, Mercuriusstraat 51, 7521 WR Enschede Holland. ---===<<<>>>===--- "WISKUNDIG AANHANGSEL". ====================== De Mandelbrot-verzameling kan het gemakkelijkst worden omschreven door gebruik te maken van complexe getallen. Complexe getallen vormen een uitbrei- ding van de re‰le getallen; daarvoor is een nieuw getal i gedefinieerd dat gelijk is aan de wortel uit -1 (bij re‰le getallen zijn wortels uit negatieve getallen een vergissing!). Elk complex getal bestaat uit een re‰el deel en een "imaginair" deel en kan worden geschreven als x + y * i. Wanneer y = 0 is het getal dus re‰el, zodat de verzameling re‰le getallen een deelverzameling van de verzameling complexe getallen is. Voor de complexe getallen zijn de rekenkun- dige bewerkingen gedefinieerd, waarbij natuurlijk elke i-kwadraat direkt door - 1 wordt vervangen en dus een minteken oplevert. Voor de mandelbrot-verzameling hebben we nodig: c1 * c2 = (x1 + y1*i) * (x2 + y2*i) = x1*x2 + (x1*y2 + x2*y1)*i - y1*y2 = (x1*x2 - y1*y2) + (x1*y2 + x2*y1)*i en c1 + c2 = (x1 + y1*i) + (x2 + y2*i) = (x1 + x2) + (y1 + y2)*i; voor re‰le getallen levert dit weer de gebruikelijke re‰le resultaten op. De absolute waarde van een complex getal is gedefinieerd als de (re‰le!) wortel uit de som van de kwadraten van het re‰le en het imaginaire deel, dus |c| = |(x + yi)| = sqrt( x * x + y * y ). De complexe getallen kunnen eenvoudig grafisch worden weergegeven als een punt in een vlak, wat de gebruikte letters x en y hier al suggereren. De absolute waarde van een complex getal kan dan worden gezien als de afstand tot de oorsprong. De funktiereeks die voor de Mandelbrotfiguur wordt uitgerekend voegt aan elk punt c van het vlak een reeks getallen toe volgens: 2 f(c) = f(c) + c, met f(c) = 0, n n-1 0 2 2 2 dus 0, c, c + c, (c + c) + c, ... [ n: 0 1 2 3 ... ], waarbij natuurlijk de bovengenoemde formules moeten worden gebruikt voor het optellen en vermenigvuldigen (of kwadrateren) van complexe getallen. Voor het tekenen van de Mandelbrot-figuur wordt nu voor elk punt het aantal iteraties (de n uit bovenstaande formule) berekend dat nodig is voordat de nieuwste waarde van de reeks een absolute waarde heeft die groter is dan 2. Deze waarde wordt dan grafisch weergegeven als een kleur of grijstint. De getoonde waarde is dus de kleinste n waarvoor geldt: |c| > 2. Het is nu eenvoudig te zien dat buiten de cirkel met straal 2 om de oorsprong er geen verschillen meer zijn te verwachten: daar is het aantal iteraties altijd 1, omdat het uitgangspunt c al een absolute waarde groter dan 2 heeft. Iets dergelijks geldt voor de Julia-fractals, deze worden berekend met: 2 f(c) = f(c) + j, met f(c) = c, n n-1 0 2 2 2 2 2 2 dus c, c + j, (c + j) + j, ((c + j) + j) + j, ... [ n: 0 1 2 3 ... ], waarbij j de Julia-parameter is en c weer het punt in het beeldvlak. Voor elke j is er dus een andere fractal. De Mandelbrot-fractal kan worden opgevat als een soort overzicht (landkaart) van alle Julia-fractals: als j = c, is de Julia-reeks hetzelfde als die van Mandelbrot, maar ‚‚n plaats opgeschoven. De Mandelbrot-fractal geeft dus per punt aan wat de Julia-fractal van dat punt en toegepast op dat punt doet (ja, zijn we er nog ??!). WAT MINDER FORMEEL: als we een punt uit het vlak prikken en volgens de formules de reekswaarden berekenen zien we die reekswaarden als het ware in het vlak rondspringen; wanneer ‚‚n van die reekswaarden ook maar buiten de cirkel met een straal van 2 om de oorsprong valt zeggen we dat de reeks onbegrensd is en stoppen we met rekenen; het aantal reekswaarden dat we daarvoor hebben moeten uitrekenen geven we dan met een kleurtje aan op het uitgangspunt. Als we moe zijn van het berekenen van waarden zeggen we dat de reeks begrensd blijft en maken we het uitgangspunt zwart. Zo werken we alle punten van het vlak af, en het resultaat is de Mandelbrot-figuur. ---===<<<>>>===--- Historie: 23/12/91: R 1.00. 5/ 4/92: R 1.10: -Rotatiesnelheid instelbaar; -32-bits berekening afdwingbaar; -Zwart/wit afdwingbaar (voor afdrukken plaatjes); -Vertaalbaar, alle tekst in de resource; -Programmafout (bij inzoomen soms geen beeld meer) verwijderd. 3/ 5/92: R 1.20: -Menubalk toegevoegd; -Animatie aanmaken toegevoegd; -Gecomprimeerd Degasformaat toegevoegd; -Maximale iteratiediepte vergroot; -Kleurbehandeling gewijzigd (geen invers meer); 14/ 5/92: R 1.21: -Verbeterde afdrukroutine; 30/ 5/92: R 1.30: -Verbeterde tekenroutine (+/- 2,5 keer zo snel!); -Versnelling bij herkenning konvergentie door periodiciteitstest; -Hoge resolutie afdrukroutine. 23/ 6/92: R 1.40: -Verder versnelde VDI/line-A tekenroutine; -Installatie als applikatie voor .MBP files mogelijk; -Precisie van integer-routines verhoogd; -Wisselen van schermen via VDI-routines uitgevoerd; -(X)IMG beeldformaat toegevoegd. 19/ 9/92: R 1.41: -Foutherstelling: folders met een punt in de naam kunnen nu ook worden gebruikt. 25/ 9/92: R 1.50: -Window voorzien van verplaatsbalk en schuifbalken; -Fout bij wisselen van filenamen hersteld; -Kompaktere (X)IMG files. 5/10/92: R 1.51: -Fout in herkenning spiegelbeelddeel hersteld; -Window behandeling verbeterd. 11/10/92: R 2.00: -Julia fractals toegevoegd; -Automatisch inladen van een standaard palet; -FPU parameterfiles nu echt compatible met emulatie; -Diverse verbeteringen. 25/10/92: R 2.01: -Multitos compatibiliteit door toetsenbordroutines via AES; -Verbeterde muisafhandeling. 14/11/92: R 2.02: -Animatie met varierende Julia-parameters mogelijk; -Centrering van plaatje bij integer berekeningen. Enschede, 14-11-1992.