@database FlashMandel.guide
@author "Paolo Alvino"
@(c) "Copyright c 1998 Dino Papararo"
@$VER: FlashMandel.guide 1.0 (19/03/98)
@font courier.font 13
@wordwrap

@node Main "FlashMandel Guide"

@{b}@{fg highlight}FlashMandel@{fg text}@{ub} 1.0 Copyright 1998 Dino Papararo

Un nuovo programma per la generazione dell'@{"insieme di Mandelbrot" link Mandelbrot}.

	@{"Installazione  " link Install}  Come installare il programma
	@{"Richieste      " link Required}  Richieste minime del programma
 	@{"YAFG           " link YAFG}  @{fg highlight}Yet Another Fractal Generator@{fg text}
	@{"Interfaccia    " link Interfc}  L'interfaccia del programma
	@{"Caratteristiche" link Caratte}  Le caratteristiche peculiari
	@{"La Storia      " link History}  La storia e le versioni precedenti
	@{"Il Futuro      " link Futuro}  Il futuro del programma
	@{"L'Autore       " link Autore}  Diamo a Cesare quel ch'è di Cesare...
	@{"Ringraziamenti " link Ringra}  ...ma diamo qualcosa anche a loro
	@{"Copyright      " link CopyRg}  Le informazioni obbligatorie

@endnode

@node Install "Installazione"

Per installare il programma basta spostare il cassetto "FlashMandel" nella directory desiderata.
@{b}@{fg highlight}FlashMandel@{fg text}@{ub} non necessita comunque di assegnamenti, modifiche alla user-startup o librerie particolari.
Si consiglia di rinominare la versione più adatta al proprio computer in "@{b}@{fg highlight}FlashMandel@{fg text}@{ub}" e di cancellare i restanti eseguibili per non creare confusione.

@next Required

@endnode

@node Mandelbrot "Informazioni su Mandelbrot"

@prev Mandelbrot

Benoit Mandelbrot è notoriamente l'inventore dei frattali. Nel 1975 coniò questo termine per riferirsi a forme auto-simili e frammentate, caratteristiche comuni di tutti i frattali che somigliano sempre a sé stessi, anche se vengono ingranditi in varie scale e sono non-continui.
L'@{fghighlight}insieme di Mandelbrot@{fg text} è un frattale generato dalla formula matematica @{fg fill}Z = Z^2+c@{fg text}.
Questa formula viene iterata varie volte nel campo complesso (ossia si prende un numero complesso inizialmente pari a zero, lo si eleva al quadrato e gli si aggiunge una costante; a questo numero viene nuovamente applicato il procedimento); "@{i}varie volte@{ui}" è proprio corrispondente alle "@{i}iterazioni@{ui}" che possono essere impostate nella stragrande maggioranza dei programmi che generano frattali.
Il valore di questa iterazione può convergere ad un numero finito o tendere all'infinito. Nel caso esso tenda all'infinito, si assegna un particolare colore corrispondente alla velocità di fuga sul piano complesso.
Questo insieme è il celebre @{"Pupazzo di Mandelbrot" link Mandelbrot.brush/main}.

@next Mandelbrot

@endnode

@node Required "Richieste di sistema"

@prev Install

@{b}@{fg highlight}FlashMandel@{fg text}@{ub} non è un vampiro di risorse.
Funziona su un qualsiasi @{b}Amiga@{ub} che abbia almeno 512 KB di ram, con qualsiasi processore, dal @{"68000 al 68060" link Processori} e qualsiasi @{"chip-set" link ChipSet}.
Dalla versione 0.870 in poi, però, è necessario che il sistema operativo sia almeno il @{b}3.0@{ub}.
Se sono presenti @{"Schede Grafiche" link ChipSet}, esse sono supportate sia tramite @{b}Screen Database@{ub} che @{b}ToolTypes@{ub}.

@endnode

@node YAFG "Yet Another Fractal Generator"

@{b}@{i}@{fg highlight}@{bg text}Perché un altro generatore di frattali?@{bg back}@{fg text}@{ui}@{ub}
Un po' per divertimento, (questo è il primo programma serio dell'@{"autore" link Autore}), ma anche perché non esiste qualcosa del genere che si basi @{b}totalmente@{ub} sul sistema operativo di @{b}Amiga@{ub} e non esegua, magari per essere un po' più veloce, sporchi trucchi da prestigiatore di sagra paesana.
Il programma, al momento, è più corto di 65 KB, mentre altri programmi simili sono grandi centinaia di KB; inoltre non supportano correttamente l'RTG, l'Overscan, il Multitasking oppure scrivono direttamente nella Chip ram o chissà dove...
Ovviamente questo non vuol dire che non ci possano essere BUG!
Per le altre caratteristiche leggere l'apposito nodo @{"Caratteristiche" link Caratte}.
@endnode

@node Interfc "L'interfaccia del programma"

Poiché @{b}@{fg highlight}FlashMandel@{fg text}@{ub} si appoggia totalmente al sistema, rispettando la @{b}@{fg highlight}Style Guide@{fg text}@{ub}, tutti i gadget, menu e requester sono di facile comprensione.

Ecco i @{b}ToolTypes@{ub} supportati al momento:

@{b}@{fg highlight}SCREENWIDTH@{fg text}@{ub} : imposta la larghezza dello schermo tra 640 e 16368 pixel (default=640).
@{b}@{fg highlight}SCREENHEIGHT@{fg text}@{ub}: imposta l'altezza dello schermo tra 480 e 16384 pixel (default=480).
@{b}@{fg highlight}SCREENPLANES@{fg text}@{ub}: imposta la profondità dello schermo tra 3 e 8 bitplane (default=8).
@{b}@{fg highlight}SCREENMODE@{fg text}@{ub}  : imposta il tipo di display da aprire OCS,ECS,AGA,RTG (default=40d20001 CGX 640x480x8).
@{b}@{fg highlight}REALMIN@{fg text}@{ub}     : imposta la coordinata sinistra dell'asse reale tra -8 e +8 (default=-2.2).
@{b}@{fg highlight}REALMAX@{fg text}@{ub}     : imposta la coordinata destra dell'asse reale tra -8 e +8 (default=+0.8).
@{b}@{fg highlight}IMAGMIN@{fg text}@{ub}     : imposta la coordinata inferiore dell'asse immaginario tra -8 e +8 (default=-1.125).
@{b}@{fg highlight}IMAGMAX@{fg text}@{ub}     : imposta la coordinata superiore dell'asse immaginario tra -8 e +8 (default=+1.125).

Al lancio del programma, se non sono stati introdotti nuovi ToolTypes, questo inizia a disegnare l'@{"insieme di Mandelbrot" link Mandelbrot.brush/main} tra le coordinate @{b}(-2.2,-1.125i)@{ub} e @{b}(+0.8,+1.125i)@{ub}, con uno schermo di dimensioni 640 x 480 al massimo numero di colori supportati (256 sotto @{"AGA/RTG" link ChipSet} e 16 sotto @{"ECS/OCS" link ChipSet}).
Terminato il disegno, compare il requester di about.

Sulla barra dello schermo sono presenti i seguenti parametri:

@{b}@{fg highlight}Real@{fg text}@{ub} corrisponde alla coordinata attuale dell'asse reale.
@{b}@{fg highlight}Imag@{fg text}@{ub} corrisponde alla coordinata attuale dell'asse immaginario.
Queste due variabili cambiano continuamente durante lo spostamento del mouse sullo schermo.

@{b}@{fg highlight}W:H@{fg text}@{ub} esprime il rapporto tra le dimensioni dello schermo.
@{b}@{fg highlight}R:I@{fg text}@{ub} esprime il rapporto tra le dimensioni dell'insieme.
Per una visualizzazione corretta queste valori @{b}DEVONO@{ub} corrispondere!
Nel caso non sia così, è @{b}NECESSARIO@{ub} andare nel @{b}@{fg highlight}Coordinates Requester@{fg text}@{ub} ShortCut @{b}@{fg highlight}Amiga C@{fg text}@{ub} e premere il pulsante @{b}@{fg highlight}Ratio@{fg text}@{ub}, quindi ricalcolare l'insieme con i nuovi valori ottenuti.

Vi sono quattro menù che, naturalmente, prevedono gli shortcut da tastiera:

	@{" Project " link Project}
	@{" Options " link Options}
	@{"Calculate" link Calculate}
	@{"  Video  " link Video}

Premendo col tasto sinistro del mouse sul disegno del frattale, apparirà un rettangolo corrispondente alle nuove coordinate di un eventuale Zoom o Preview.
Durante il rendering, usando il tasto @{b}@{fg highlight}Tab@{fg text}@{ub} si salta il @{"rettangolo corrente" link CProb}; premendo il tasto @{b}@{fg highlight}Esc@{fg text}@{ub} o selezionando il menu @{b}@{fg highlight}Stop@{fg text}@{ub} con il Mouse o da ShortCut @{b}@{fg highlight}Amiga X@{fg text}@{ub}, si termina il calcolo del frattale.

@next Caratte

@endnode

@node Project "Menu Project"

@prev Interfc

Sono presenti sette voci, @{b}About@{ub}, @{b}Load Picture@{ub}, @{b}Save Picture@{ub}, @{b}Load Palette@{ub}, @{b}Save Palette@{ub}, @{b}Print@{ub} e @{b}Quit@{ub}.

@{b}About@{ub} produce lo stesso requester che compare all'inizio e dà informazioni sull'@{"Autore" link Autore} e sul gruppo di lavoro.
Shortcut: @{b}Amiga A@{ub}

@{b}Load Picture@{ub} permette di caricare un'immagine IFF precedentemente salvata, impostando correttamente i parametri come quelli al momento del salvataggio.
Shortcut: @{b}Amiga L@{ub}

@{b}Save Picture@{ub} salva l'immagine corrente in IFF, con in aggiunta uno speciale @{b}Chunk@{ub} nel quale vengono memorizzate le coordinate del frattale e gli altri parametri di lavoro (iterazioni, tipo di mapping, ecc.). Cliccando su tale immagine dal Workbench, verrà richiamato automaticamente MultiView, che, quindi, deve essere nel Path di ricerca. Attenzione a non sovrascivere un file già esistente perchè non è stato inserito il controllo e non viene chiesta la conferma dell'operazione.
Shortcut: @{b}Amiga S@{ub}

@{b}Load Palette@{ub} carica una palette IFF, sia a sé stante che da una qualunque immagine IFF: attenzione ai colori, perché FlashMandel li utilizza a partire dal più alto, contrariamente ad altri programmi simili... in tal caso si può invertire la palette dal @{"Palette requester" link PalReq}.
Shortcut: @{b}Amiga K@{ub}

@{b}Save Palette@{ub} salva la palette corrente in formato IFF, utilizzabile da qualsiasi programma di editing grafico.
Shortcut: @{b}Amiga J@{ub}

@{b}Print@{ub} esegue una @{i}hard copy@{ui} dello schermo, ossia invia l'immagine corrente così come è alla stampante (i settaggi sono quelli delle preferences), la barra del titolo, se presente, non viene stampata.
Shortcut: @{b}Amiga D@{ub}

@{b}Quit@{ub} fa terminare il programma.
Shortcut: @{b}Amiga Q@{ub}

@endnode

@node Options "Menu Options"

Sono presenti sei voci: @{b}Title@{ub}, @{b}Limits@{ub}, @{b}Iterations@{ub}, @{b}Priority@{ub}, @{b}Color mapping@{ub}, @{b}Precision@{ub}.

@{b}Title@{ub} è un sottomenu contenente un @{"flag booleano" link BoolFlag} che specifica se mostrare o meno la barra dello schermo (Shortcut: @{b}Amiga O@{ub}); se la barra manca, è possibile fare zoom anche in alto e, premendo il tasto destro, si potrà comunque accedere ai menu.
Il sottomenu contiene anche l'indicazione @{b}Last time@{ub} (Shortcut: @{b}Amiga T@{ub}), che mostra sulla barra dei menu il tempo impiegato a calcolare l'ultimo frattale e la velocità espressa in Pixels per Secondi, ovviamente se si interrompe il rendering tale valore sara' inesatto.
E' utile notare che la velocità di calcolo non è direttamente proporzionale alle dimensioni dello schermo, a causa del particolare metodo di tracciamento, il cosidetto 'Divide et Impera'.
Praticamente con altri programmi del genere un rendering in 800x600 impiega il quadrulo del tempo di uno in 400x300 mentre invece con @{b}FlashMandel@{ub} si ha sempre un notevole risparmio.

@{b}Limits@{ub} mostra una finestra con alcuni gadget numerici e permette di inserire manualmente i nuovi valori per le coordinate.
I quattro @{"Button Gadget" link ButtGad} principali @{b}Accept Ratio Reset Cancel@{ub} permettono, rispettivamente, di accettare e rendere attivi i cambiamenti, adeguare l'aspect ratio delle coordinate dell'insieme alle dimensioni dello schermo, ripristinare i valori originari e chiudere la finestra senza apportare modifiche alle coordinate.
L'altro pulsantino, invece, serve solo a decidere quali delle due dimensioni dell'insieme lasciare inalterate per un eventuale adeguamento del rapporto tra le dimensioni del frattale e quelle dello schermo; di default vengono tenute fisse le coordinate dell'asse reale dell'insieme.
Shortcut: @{b}Amiga C@{ub}

@{b}Iteration@{ub} è un sottomenu in cui si può scegliere il numero delle @{"iterazioni" link Mandelbrot}, con valori predefiniti oppure scegliendolo manualmente tramite requester. Va notato che, a seconda del metodo di @{"mapping dei colori" link MappingCol} utilizzato, il miglior numero di iterazioni dovrebbe essere maggiore del numero dei colori dello schermo; infatti, se questo non fosse vero, si avrebbero alcuni colori inutilizzati. Questo parametro influenza enormemente il risultato finale, sia come resa grafica che come tempi di elaborazione!
Il numero massimo di iterazioni consentite è di 2^15 (32768).
Shortcut: @{b}Amiga I@{ub} per un numero di iterazioni non predefinito.

@{b}Priority@{ub} è un sottomenu nel quale si può scegliere la priorità del task tra -5 e +5 per non interferire con le normali attività del sistema operativo.
Shortcut: @{b}Amiga <n>@{ub} per impostare la priorità a +<n>, dove <n> è un valore numerico compreso tra 0 e 5.
@{b}Amiga Shift <n>@{ub} per impostare la priorità a -<n>.
@{b}NOTA:@{ub} Al momento i tasti impostati per le priorità negative sono relativi a quelli di una tastiera italiana e quindi sono, in sequenza da -1 a -5, <@{b}!@{ub}> <@{b}"@{ub}> <@{b}#@{ub}> <@{b}$@{ub}> <@{b}%@{ub}>

@{b}Color mapping@{ub} è un sottomenu che permette di selezionare il @{"mapping dei colori" link MappingCol}, ossia come debbano essere messi in relazione le iterazioni del punto in considerazione e il colore della palette.
 	@{b}Repeated@{ub}  consente di ripetere i colori ciclicamente.
	@{b}Spread@{ub}    mappa i colori linearmente tra massima e minima iterazione.

@{b}Precision@{ub} permette di scegliere la @{"modalita di calcolo" link IntIeee} tra intera e IEEE: la prima è ultraveloce, ma manca di precisione dopo un po', la seconda usa le normali funzioni di libreria e/o coprocessore matematico.

@endnode

@node Calculate "Menu Calculate"

Sono presenti cinque voci: @{b}Preview@{ub}, @{b}ReCalculate@{ub}, @{b}UnDo@{ub}, @{b}Zoom@{ub}, @{b}Stop@{ub}.

@{b}Preview@{ub} apre una finestra grande un quarto di schermo e vi disegna il frattale aggiornato alle nuove coordinate.
Shortcut: @{b}Amiga W@{ub}

@{b}ReCalculate@{ub} ridisegna il frattale sullo schermo, aggiornato ai vari parametri.
Shortcut: @{b}Amiga R@{ub}

@{b}UnDo@{ub} permette di tornare solo alle precedenti coordinate.
Shortcut: @{b}Amiga U@{ub}

@{b}Zoom@{ub} ridisegna il frattale tra le coordinate del rettangolo che viene selezionato.
Shortcut: @{b}Amiga Z@{ub}

@{b}Stop@{ub} ferma il disegno del frattale.
Shortcut: @{b}Amiga X@{ub}, lo stesso risultato si ottiene premendo il tasto ESC.

@endnode

@node Video "Menu Video"

Sono presenti quattro voci: @{b}Cycle@{ub}, @{b}Palette@{ub}, @{b}Screen mode@{ub}, @{b}Font settings@{ub}.

@{b}Cycle@{ub} è un sottomenu con tre opzioni:

  @{b}Forward@{ub}  abilita il @{"ciclo dei colori" link ColCyc} in avanti (Shortcut: @{b}Amiga >@{ub}).

  @{b}Backward@{ub} abilita il @{"ciclo dei colori" link ColCyc} all'indietro (Shortcut: @{b}Amiga <@{ub}).

  @{b}Delay@{ub}    permette di impostare il ritardo (in cinquantesimi di secondo) tra i cambi di colore (Shortcut: @{b}Amiga -@{ub}).


@{b}Palette@{ub} apre un @{"Palette requester" link PalReq} che permette di cambiare i colori della palette.

@{b}Screen mode@{ub} apre un requester ASL e permette di scegliere la modalità video in cui tracciare il frattale. Sono ovviamente supportate anche le modalità video di schede grafiche che aggiornino lo @{fg highlight}Screen Database@{fg text} fino ad un massimo di 256 colori, infatti il programma usa al massimo 256 colori contemporanei su schermo ed aprire schermi a maggiore profondità porta solo ad uno spreco di risorse e di tempo nel rendering.

@{b}Font settings@{ub} permette di cambiare i caratteri sullo schermo per una migliore lettura, specialmente alle risoluzioni più alte.
@next Interfc

@endnode

@node BoolFlag "Flag Booleano"

@prev BoolFlag

Un flag booleano ha solo due stati, acceso/spento, zero/uno; in questo caso determina se la barra dello schermo deve essere presente o no.
(@{fg fill}Non pensavo che ci fosse gente che non lo conoscesse...@{fg text})

@next BoolFlag

@endnode

@node ButtGad "Button Gadget"

@prev ButtGad

Un @{b}Button Gadget@{ub} è un Gadget (elemento selezionabile dell'interfaccia) che può essere premuto per far eseguire qualche funzione.
(@{fg fill}Non pensavo che ci fosse gente che non lo conoscesse...@{fg text})

@next ButtGad

@endnode

@node PalReq "Palette Requester"

@prev PalReq

Il @{b}Palette Requester@{ub} è una finestra che consente di cambiare i colori della palette (la tavolozza dei colori).

Questa finestra è composta da svariati gadget. Il primo è un rettangolo che contiene tutti i colori modificabili, selezionandone uno si potrà operare su ciascuna delle sue componenti cromatiche. I colori sono ordinati da sinistra a destra e dall'alto in basso; il primo colore è quello in alto a sinistra, il secondo quello successivo. Terminata una riga, il colore successivo è quello all'inizio della riga seguente. Le prime 4 penne in alto a sinistra sono da considerarsi fisse perchè sono utilizzate per il look dell'interfaccia, è comunque possibile cambiarle, ma bisogna prestare attenzione.
Il gadget @{b}Copy@{ub} permette di copiare il colore selezionato in un'altra posizione. Dopo aver scelto il colore da copiare e aver premuto @{b}Copy@{ub}, bisognerà selezionare il colore di destinazione e premere il gadget @{b}Paste@{ub}.
Il gadget @{b}Paste@{ub} riproduce effettivamente nella posizione corrente il colore copiato precedentemente con il gadget @{b}Copy@{ub}.
Il gadget @{b}Spread@{ub} sfuma i colori compresi tra quello selezionato al momento della pressione del gadget e quello selezionato successivamente.
Il gadget @{b}Invert@{ub} capovolge la palette. E' utile sia per testare al volo la parte alta della palette senza dover effettuare numerosi zoom, sia per impostare le palette di pictures ottenute con altri programmi. Infatti @{b}FlashMandel@{ub} per questioni di velocità usa i colori in modo diverso dagli altri, la penna 255 è la prima ad essere usata, la 254 la seconda e così via...
Il gadget @{b}UnDo@{ub} permette di annullare solo l'ultima operazione compiuta.

I tre gadget di scorrimento permettono di modificare le componenti di rosso (R), verde (G) e blu (B) del colore corrente.
Oltre che con il mouse, è possibile ed assolutamente consigliato modificare tali componenti con i tasti @{b}'e'-'t'@{ub} per il rosso, @{b}'f'-'h'@{ub} per il verde, @{b}'v'-'n'@{ub} per il blu. In tale modo praticamente con la pressione del tasto @{b}'e'@{ub} per esempio si otterrà il decremento di una unità della componente rossa, mentre invece premendo il tasto @{b}'t'@{ub} si avrà un incremento di una unità sempre della componente rossa. Attenzione al fatto che i tasti sono @{b}'case sensitive'@{ub} e se usati in combinazione dello @{b}shift/caps lock@{ub} si avrà un decremento/incremento di @{b}10@{ub} unità.

I tre gadget @{b}Accept@{ub}, @{b}Reset@{ub} e @{b}Cancel@{ub} in basso permettono, rispettivamente, di accettare le nuove impostazioni cromatiche, ripristinare le impostazioni originali e chiudere la finestra senza effettuare cambiamenti.

@next PalReq

@endnode

@node ColCyc "Color Cycling"

@prev ColCyc

Il @{i}Cycling dei colori@{ui} è una funzione che crea una sorta di animazione in un disegno, spostando in sequenza i colori della palette.
Se si ha un'immagine contenente una @{"barra colorata" link Bar.brush/main} con una scala di colori e, in seguito, copiamo il primo colore nel secondo, il secondo nel terzo e così via, otteniamo l'effetto di animare la barra, di farla scorrere.
L'@{"insieme di Mandelbrot" link Mandelbrot} generato da questo programma (e da molti altri) ha la proprietà che velocità di fuga vicine corrispondano a colori vicini nella palette. Per cui la rotazione della palette, in questo caso, genera un suggestivo effetto.

@next ColCyc

@endnode

@node MappingCol "Color Mapping"

@prev MappingCol

Sono previste due modalità di Color Mapping. Quella di default (ossia la Spread) è quella che maggiormente si avvicina alla realtà, assegnando ai vari punti dell'insieme un colore univoco. A tutti i punti del piano complesso che presentano una velocità di fuga simile viene assegnato un colore a partire dalla parte alta della palette (in basso a destra del Palette Requester), fino ad arrivare alla parte bassa man mano che ci si addentra nei meandri del frattale. Una volta esauriti i colori, è necessario aumentare il numero di iterazioni per punto, in modo tale che ritornino disponibili anche quelli più in alto.

Inoltre, è prevista anche la classica (e forse meno accattivante) tecnica del Repeat, che assegna ad ogni punto con una velocità di fuga diversa un colore diverso fino all'ultimo disponibile, dopodiché riparte dal primo e così via...

E' indispensabile che le iterazioni siano sempre maggiori del numero massimo dei colori (15-25% in più del numero dei colori per i primi zoom, fino via via ad aumentare), pena la perdita cromatica nella resa video.

@next MappingCol

@endnode

@node Caratte "Caratteristiche (peculiari) del programma"

@prev Interfc

Il programma rispetta totalmente l'O.S. e il Multitasking, fa uso solo delle funzioni di libreria standard, non sono stati rilevati Enforcer o Mungwall Hit.
E' stato testato con il Kickstart @{b}3.0@{ub} su @{b}A-1200 standard e con Omega 1200@{ub}, su @{b}Amiga 4000@{ub} con 060/PPC604 + CV64, con il kickstart @{b}3.1@{ub} su @{b}Amiga 2000@{ub} con GVP Combo + CV643D e su @{b}Amiga 3000@{ub} con PicassoIV.
Sfrutta qualsiasi modo video presente nello @{fg highlight}Screen Database@{fg text}, quindi anche quelli aggiunti da eventuali schede grafiche.
Usa matematica @{i}@{"Fixed Point" link IntIeee}@{ui} a 32 bit per aumentare la velocità di calcolo su computer senza FPU.
Nella versione @{i}IEEE@{ui} usa le librerie matematiche a doppia precisione per avere maggior profondità e sfruttare il coprocessore (se presente).
Nella versone @{i}FPU@{ui} aumenta l'efficienza della FPU, utilizzandola direttamente.
Il disegno del frattale sfrutta le caratteristiche di @{"continuità probabilistica" link CProb} dell'@{"insieme di Mandelbrot" link Mandelbrot}, che consente di abbreviare i tempi nel rendering di aree che abbiano la stessa velocità di fuga.
Utilizza i ToolTypes per una corretta configurazione.
Sono contenuti i sorgenti.

@endnode

@node Futuro "Il futuro del programma"

Come avrete notato, la versione attuale è la 1.0 in teoria quella definitiva.
Comunque ci sarebbero da apportare almeno queste piccole migliorie come:

@{b}1)@{ub} Il supporto del PowerPC per rendering in REALTIME ! (Se ve ne trovate uno in più, chiamatemi...)
@{b}2)@{ub} Il supporto per la @{fg highlight}Locale.library@{fg text}.

Ad ogni modo, non vi sono bug o effetti collaterali conosciuti (se non nei casi di appurata ipersensibilità al prodotto).
Sono vivamente graditi suggerimenti e/o segnalazioni di eventuali bug da mandare all'@{"autore" link Autore} via posta normale o all'indirizzo E-Mail @{fg highlight}DinoP@IName.Com@{fg text}.

@next History

@endnode

@node History "La storia di FlashMandel"

@prev Futuro

@{b}@{fg highlight}FlashMandel 1.0@{fg text}@{ub}

 Aggiunta velocità di rendering in pixel/sec nel menù Options->Title->Last Time.

 Esteso palette requester con nuova funzione di invert e migliorato controllo sui colori tramite tastiera.

 Ora sono visibili solo schermi tra 16/256 colori, 3/8 bitplane.

 Piccolo incremento di velocità nel rendering.

 Aggiornata documentazione e tradotta anche in Inglese.

 Aggiunta nuove Palette a 256 colori.

 Aggiunta nuove Picture a 256 colori.

 Piccole correzioni al codice di startup.

@{b}@{fg highlight}FlashMandel 0.870@{fg text}@{ub}

 Implementati ToolTypes.

 Implementato Font requester.

 Implementato Ratio button nel Coordinates requester.

 Cambiate coordinate di partenza.

 Cambiata barra del titolo dello schermo.

 Fissata risoluzione minima di schermo a 640x480.

 Riscritta documentazione.

 Eliminato script di installazione.

 Aggiunte palettes e pictures a 256 colori.

 Eliminati alcuni potenziali bug e effetti collaterali specialmente su RTG.

@{b}@{fg highlight}FlashMandel 0.810@{fg text}@{ub}

 Aperto lo schermo con un certo numero di colori (era possibile solo diminuirli).

 Corretto bug nel cycle per il riconoscimento di uno schermo EHB.

 Aggiunto controllo da tastiera per le varie componenti R,G,B del palette requester.

 Aggiunte altre palette a 256 colori e diminuite quelle a 32.

 Aggiunte altre pictures.

 Varie modifiche minori al codice.

 Ricompilato con il SAS C 6.58.

 Aggiornata la documentazione.

 Riveduto lo script di installazione.

@{b}@{fg highlight}FlashMandel 0.700@{fg text}@{ub}

 Aggiunti i moduli di @{b}Load@{ub} e @{b}Save@{ub} per immagini e palette.

 Migliorata l'apertura dello schermo iniziale.

 Corretti molti piccoli bug.

@{b}@{fg highlight}FlashMandel 0.100@{fg text}@{ub}

 Aggiunto il @{"ciclo dei colori" link ColCyc}.

 Aggiunto un @{"Palette Requester" link PalReq}.

 Eliminate le funzioni relative ai particolari processori e aggiunte versioni interamente compilate per @{"processori diversi" link Processori}.

 Metodo di calcolo del frattale secondo la @{"continuità probabilistica" link CProb} migliorato per evitare di ricalcolare più volte gli stessi punti.

 Aggiunti diversi tipi di @{"mapping dei colori" link MappingCol}.

 Aggiunto uno @{"script d'istallazione" link Install}.

 Corretti alcuni bug nel programma e nella documentazione.


@{b}@{fg highlight}FlashMandel 0.099@{fg text}@{ub}

 Versione inizialmente rilasciata.

@next Ringra

@endnode

@node Autore "Chi è l'autore e come contattarlo"

@prev RBrandner

Indirizzo postale (se avete @{fg highlight}molta@{fg text} pazienza):

	@{fg highlight}Dino Papararo@{fg text}
	Via Manzoni 184
	80123 Napoli
        Italia

Indirizzo E-Mail:

        DinoP@IName.Com

Indirizzo FidoNet:

        2:335/202.50

Autore del codice di @{b}@{fg highlight}FlashMandel@{fg text}@{ub}.

@next CPucci

@endnode

@node CPucci "Prezioso collaboratore"

@prev Autore

Indirizzo postale (se avete tempo da perdere):

	@{fg highlight}Claudio Pucci@{fg text}
	Via Umberto Viale 2
	56124 Pisa
        Italia

Indirizzo E-Mail:

	E-Mail: @{fg fill}PucciC\@Cli.Di.UniPi.It@{fg text}

Ha realizzato la prima documentazione in @{b}AmigaGuide@{ub}, i vecchi script d'installazione non più supportati e ha collaborato alla risoluzione di alcuni problemi riscontrati nel B-testing e alla stesura di piccoli pezzi di codice.

@next LDPietra

@endnode

@node LDPietra "Per le spiegazioni iniziali sui Fixed Point"

@prev CPucci

	@{fg highlight}Lelio della Pietra@{fg text}

Ha spiegato le operazioni fondamentali della matematica in Fixed Point.

@next STassi

@endnode

@node STassi "Fondamentale Beta Tester"

@prev LDPietra

	@{fg highlight}Sergio Tassi@{fg text}

Ha svolto il lavoro fondamentale di beta testing su di un A-1200 NF, ha curato le palette del programma e l'aspetto estetico della GUI.

@next GStaffelli

@endnode

@node GStaffelli "Per il debug su CGX"

@prev STassi

	@{fg highlight}Giuseppe Staffelli@{fg text}

Ha svolto il lavoro di debug su CyberGraphix.

@next PAlvino

@endnode

@node PAlvino "Correttore di bozze"

@prev GStaffelli

	@{fg highlight}Paolo Alvino@{fg text}

Ha rielaborato e corretto la documentazione Amigaguide e testato il programma sul suo A-3000.

@next RBrandner

@endnode

@node RBrandner "Autore di un altro generatore di frattali"

@prev PAlvino

	@{fg highlight}Robert Brandner@{fg text}

	Austria

Ha creato un altro programma di generazione dei frattali, dal quale @{b}@{fg highlight}FlashMandel@{fg text}@{ub} è derivato. Il suo programma era stato scritto in ModulaII nel lontano 1991 e già possedeva l'ottimizzazione del disegno secondo le proprietà dell'@{"insieme di Mandelbrot" link Mandelbrot}, ossia la @{"continuità probabilistica" link CProb}.

Naturalmente @{b}@{fg highlight}FlashMandel@{fg text}@{ub} è una netta evoluzione del progetto originale (tsk!), il quale ai tempi d'oggi è completamente obsoleto e mal scritto... (@{"Dino Papararo" link Autore})

@next TFerMGie

@endnode

@node TFerMGie "Autori di Mandel-92"

@prev RBrandner

	@{fg highlight}Tobias Ferber e Martin Giese@{fg text}

Hanno scritto un programma di calcolo dei frattali (Mandel-92) che conteneva una funzione di calcolo della velocità di fuga di un punto di un frattale che utilizzava una matematica @{"Fixed Point" link IntIeee} di tipo 4+28, dalla quale l'autore ha sviluppato la propria routine di calcolo.

@next Autore

@endnode

@node Ringra "Lo staff di FlashMandel"

@prev History

L'@{"autore" link Autore} deve ringraziare varie persone per il supporto datogli durante la stesura del codice e lo sviluppo del progetto:

@{"Lelio della Pietra" link LDPietra} per le spiegazioni sui Fixed Point.

@{"Claudio Pucci" link CPucci} per il lavoro di debugging svolto (mandando i sorgenti e le varie pre-versioni da Napoli a Pisa prima con un vecchissimo modem a 2400 BAUD e, in seguito, tramite posta) e per la prima versione della documentazione in @{b}AmigaGuide@{ub}, i vecchi @{"script d'istallazione" link Install} non più supportati e l'intelligente funzione per il Cycle dei colori.

@{"Sergio Tassi" link STassi} per il beta testing, le palette e la gui.

@{"Giuseppe Staffelli" link GStaffelli} per il debug su CGX.

@{"Paolo Alvino" link PAlvino} per la rielaborazione di questo documento.

@{"Robert Brandner" link RBrandner} per un vecchio programma di frattali da cui l'autore ha avuto lo spunto per iniziare @{b}@{fg highlight}FlashMandel@{fg text}@{ub}.

@{"Tobias Ferber e Martin Giese" link TFerMGie} per una funzione di calcolo della velocità di fuga di un punto di un frattale che utilizzava matematica @{"Fixed Point" link IntIeee} da cui l'autore ha sviluppato le proprie routine.

@endnode

@node CopyRg "Informazioni di CopyRight"

Il programma @{b}@{fg highlight}FlashMandel@{fg text}@{ub} è GiftWare, mandate un qualsiasi regalo anche in natura all'@{"autore" link Autore}, se lo ritenete meritevole.

USATE @{b}@{fg highlight}FlashMandel@{fg text}@{ub} A VOSTRO RISCHIO E PERICOLO, NON C'E' ALCUNA GARANZIA DI FUNZIONAMENTO, DI STABILITA' O CHE NON VI FORMATTI L'HARD DISK, CHE NON VI PIANTI LA MACCHINA UN SECONDO PRIMA DI RAGGIUNGERE IL RISULTATO CHE ASPETTAVATE DOPO GIORNI E GIORNI DI CALCOLI O CHE UN METEORITE NON COLPISCA LA VOSTRA CASA. L'@{"AUTORE" link Autore} NON E' NE' SI RITERRA' RESPONSABILE DI NULLA.

Nessuna parte o l'intero archivio di @{b}@{fg highlight}FlashMandel@{fg text}@{ub} possono essere utilizzati a fini di lucro, tuttavia esso è liberamente distribuibile in qualsivoglia raccolta di programmi Public Domain, ShareWare, GiftWare, ecc., purché non venga richiesta una cifra superiore a 30 US $. Sono liberi di includere questo programma le raccolte Fred Fish e i CD di Aminet.

@next CopyRg

@endnode

@node Processori "I processori supportati"

@prev Processori

Sono supportati tutti i processori Motorola® della famiglia 68000.
Nell'archivio vengono rilasciate le versioni per 68000, 68020+68881 e 68060; si possono tranquillamente eliminare quelle superflue e rinominare quella più adatta al vostro sistema in "FlashMandel".
Non sono rilasciate versioni compilate per 68010, 68020, 68030 (+68881/2) e 68040 perche non c'è nessun miglioramento rispetto alle versioni fornite.

@next Processori

@endnode

@node ChipSet "I chipset supportati"

@prev ChipSet

Sono supportati tutti i chipset originali @{b}Amiga@{ub}, l'@{b}OCS@{ub}, l'@{b}ECS@{ub} e l'@{b}AGA@{ub}. Il programma si adatta a quello posseduto, permettendo un massimo di 64 colori (in ExtraHalfBrite) con @{b}OCS@{ub} e @{b}ECS@{ub}, e schermi fino a 256 colori sotto @{b}AGA@{ub}.
Se sono presenti schede grafiche che aggiungono propri schermi allo @{fg highlight}Screen Database@{fg text}, il programma sfrutterà tali schermi in qualsiasi risoluzione (sempre con una limitazione di 256 colori, al momento).

@next ChipSet

@endnode

@node IntIeee "Differenze tra Matematica fixed point e IEEE"

@prev IntIeee

@{b}@{fg highlight}FlashMandel@{fg text}@{ub} sfrutta due diversi tipi di calcolo che hanno i rispettivi vantaggi e svantaggi:

@{b}Fixed Point@{ub} è una matematica che divide la parte intera dalla parte decimale di un numero sempre nello stesso numero di bit (in questo caso 1 bit di segno, 3 bit di intero e 28 bit di virgola fissa). Le funzioni usate utilizzano 32 bit di precisione (una LongWord) e sono molto veloci, ma hanno lo svantaggio di perdere velocemente di precisione nella parte decimale (non sono, infatti, più precise di "uno su due alla 27", ciò è dovuto agli errori nelle approssimazioni). La funzione in Fixed Point prende spunto da quella di Mandel-92, programma per il calcolo dei frattali scritto da @{"Tobias Ferber" link TFerMGie} e @{"Martin Giese" link TFerMGie}, che l'@{"autore" link Autore} ha fortemente ottimizzato.
Avendo soli tre bit di precisione per gli interi, che possono rappresentare numeri tra -8 e +8, non si può disegnare il frattale al di fuori di questo intervallo numerico.

@{b}IEEE@{ub} è la matematica standard che viene usata dalla stragrande maggioranza dei processori, è lenta perché usa la virgola mobile, ma ha una maggiore precisione; se presente, il coprocessore matematico viene sfruttato, oltre che con le versioni appositamente compilate, anche con la libreria IEEE di sistema che lo riconosce automaticamente.

@next IntIeee

@endnode

@node CProb "Continuità Probabilistica"

@prev CProb

@{b}@{fg highlight}FlashMandel@{fg text}@{ub} sfrutta la proprietà dell'@{"insieme di Mandelbrot" link Mandelbrot} nota come @{b}Continuità Probabilistica@{ub} ossia:

@{b}@{i}Dato un rettangolo sul piano complesso contenente l'@{"insieme di Mandelbrot" link Mandelbrot}, se tutti i punti sui contorni del rettangolo hanno la stessa velocità di fuga allora è "molto probabile" che anche l'area all'interno abbia la medesima velocità di fuga.@{ui}@{ub}

Il programma traccia i bordi del rettangolo da disegnare e, se questi hanno il medesimo colore, riempie l'area con il colore stesso, altrimenti divide il rettangolo in due parti e ricomincia nuovamente sui due rettangoli generati ricorsivamente, con una strategia detta @{i}divide et impera@{ui}.
Una spiegazione del @{i}probabilistico@{ui} si può avere se si fa tracciare al programma l'area del piano complesso di coordinate (-8,-8i) (8,8i), che riempie tutta con un colore uniforme: non è un bug del programma, ha solo commesso un errore in probabilità...

@next CProb

@endnode
