Fractal Object Editor (FOE)
ver. 1.5 (Aprile 1994)

di Riccardo Barberi e Piotr Pieranski
 
Preambolo
Questo programma ti permette di studiare Oggetti Frattali molto diversi 
fra loro. Ogni frattale e' descritto da una matrice dei coefficienti delle 
trasformazioni affini che lo definiscono, in accordo con gli algoritmi, 
detti Iterated Function System (IFS) sviluppati da M.Barnsley. 
Per un approfondimento rimandiamo al suo libro Fractals Everywhere, Acad. 
Press 1988.
Usando dei tasti predefiniti tu potrai modificare ogni parametro delle N 
trasformazioni affini dell'IFS scelto. E' possibile aggiungere e cancellare 
trasformazioni. E' possibile cambiare la loro probabilita'. 
Ci sono veramente molte possibilita'. Per cominciare ad imparare dai una 
occhiata al manuale e prova, prova, prova.
Le matrici IFS sono memorizzate in sottodirectory. Tu puoi aggiungerne di nuove.
Se sei soddisfatto di una immagine ottenuta, salvala!
Gli oggetti che creerai con questo programma potranno in seguito essere usati 
con programmi di disegno, morphing ed animazioni frattali.
IMPARA GIOCANDO!

Richieste minime di sistema:

IBM AT, PS/2  e veri compatibili
MS-DOS   2.0  o versioni successive
scheda grafica VGA con monitor VGA
256 KByte di RAM
una unita' per floppy disk da 31/2 
si raccomanda l'uso di un hard disk (non indispensabile)
clock minimo suggerito > 16 MHz
processore: si raccomanda  80286 e superiori (non indispensabile)

Attenzione!
Il file FOE_1_5.ZIP deve essere decompresso con il programma pkunzip.exe
e con l'opzione -d attiva per ottenere la corretta struttura di sottodirectory
necessarie a FOE.EXE per operare correttamente.
Esempio: pkunzip -d foe_1_5.zip

Attenzione!
Perche' il programma operi correttamente, i tasti di NumLock e CapsLock 
devono essere inattivi sulla tastiera. 

Nota:
Per usare FOE con schermi monocromatici ed avere un buon contrasto,
rinominare il file COLOR.MON in COLOR.CFG.

Introduzione e apprendimento

Il Fractal Object Editor e' un tipo di strumento visuale (in analogia con 
musicale) che ti rendera' capace di disegnare in un solo colpo delle immagini 
molto complesse come una nuvola, una foglia o un intero albero.
Il modo usuale di disegnare un albero e' quello di tracciare separatamente i 
vari elementi della sua struttura a piu' livelli: il tronco, i rami, le foglie.
Il disegno frattale e' completamente differente. Tutti gli elementi sono 
tracciati contemporaneamente. E' possibile? Si, ma c'e' un prezzo da pagare: 
tutti gli elementi dell'oggetto che disegnerai saranno in qualche modo 
simili fra loro.
Dai un'occhiata al classico Oggetto Frattale conosciuto come la Felce di 
Barnsley (Barnsley's Fern. E' chiamata cosi' perche' e' stato Michael Barnsley 
a mostrarci per primo la sua bellezza). Guardala prima come un singolo 
oggetto. Poi osserva le sue foglie orizzontali: sono una versione ridotta 
dell'intera felce. Le stesse foglie orizzontali sono a loro volta composte 
da elementi che somigliano, in una scala ancora piu' ridotta, all'intera felce.
A parte qualche piccola deformazione, la singola forma che puoi riconoscere 
in ogni livello di questa struttura ad infiniti livelli e' la forma stessa 
dell'oggetto nel suo complesso.
D'altra parte, l'autosimilarita' e' inevitabile: essa e' il risultato delle 
proprieta' del particolare nucleo su cui l'intero programma e' costruito:
l' Iterated Function System Algorithm.
(Comprendere in dettaglio come questo funzioni non e' impossibile - prova a 
leggere Fractal Geometry di P.Pieranski, 1991, o Fractals Everywhere di 
M.Barnsley, Academic Press, 1988)
Inoltre, ci sembra che sia proprio l'autosimilarita' che rende gli Oggetti 
Frattali cosi' attraenti.
Se ci riflettiamo un po', il problema e' in qualche modo simile a quello 
incontrato nella sintesi dei suoni musicali: questi ci sembrano piacevoli 
quando le loro componenti di Fourier rispondono a semplici rapporti razionali. 
Gli strumenti elettronici fanno uso di questa verita' fondamentale. In 
generale, l'arte di dipingere immagini frattali usando il nostro programma 
FOE e' analoga all'arte di creare note singole usando uno strumento musicale 
tradizionale o un sintetizzatore elettronico. Le regole di base sono 
piuttosto semplici, e' facile creare un suono qualsiasi, ma creare il suono 
desiderato e' una questione di pratica.
Il modo migliore per apprendere sarebbe certamente quello di seguire un buon 
corso di autoapprendimento. Il problema e' che un tale corso sull'arte di 
creare frattali non esiste. Quest'arte e' nel suo periodo infantile ed il 
tuo PC con Il nostro Fractal Object Editor e' uno dei pochi strumenti 
esistenti al mondo con cui puoi esercitarti. Noi non possiamo insegnarti 
ad usarlo ad alto livello. Quello che possiamo fare e' presentarti qualche 
regola elementare e qualche esempio degli infiniti Oggetti Frattali che 
puoi creare usando queste regole.
Prima di cominciare a creare un tuo nuovo frattale, tenta di modificare 
qualcuno di quelli gia' pronti. Gioca con i parametri di Scale (ridimensiona), 
Rotation (ruota) e Translation (sposta) di ognuna delle N trasformazioni 
che fanno parte della IFS (Iterated Function System) che hai scelto.
Noi ti aiuteremo a selezionare ed a modificare la Felce di Barnsley 
(Barnsley's Fern) che troverai nella sottodirectory Plants.
Fai partire il Fractal Object Editor con il comando FOE dalla sottodirectory 
FRACVGA sul tuo hard disk. Vedrai due schermate di presentazione, che 
scompariranno premendo il tasto 'spazio' o 'invio' o che possono essere 
completamente saltate con il tasto 'esc'.
Ora puoi selezionare l'opzione Change IFS sottodirectory  (Cambia la 
sottodirectory) del menu principale. Questo menu e' il solo attivo in 
questo momento (bordo verde). Gli altri due menu Change Transformations 
(modifica le trasformazioni) e Change World (cambia tutto) sono presenti, 
ma inattivi (bordo rosso).
Premi il tasto 'd' per attivare l'opzione Change IFS sottodirectory. Usando 
i tasti freccia, seleziona ora la sottodirectory PLANTS e poi premi 'invio'. 
Ora sei nella sottodirectory prescelta.
Allo stesso modo, con i tasti freccia, puoi selezionare il file IFS Fern 
nella finestra che mostra tutti i files della sottodirectory selezionata.
Il tuo schermo ti sta ora mostrando il disegno frattale della felce (Fern) 
nella finestra di edit, sulla destra della schermata principale del Fractal 
Object Editor. 
Questo Oggetto Frattale e' composto da quattro trasformazioni, come risulta 
dalla linea
Transf...[1..4]            
sotto il menu principale.
Tutti i caratteri bianchi sullo schermo indicano delle opzioni attive. Noi 
abbiamo selezionato l'opzione Change IFS sottodirectory premendo il tasto 'd' 
del menu principale.
Ora puoi far apparire la rappresentazione di una delle trasformazioni che 
compongono il frattale Fern, premendo un tasto numerico tra '1' e '4'.
Il tasto '1' selezionera' la prima trasformazione di Fern e attivera' il menu 
Change transformations. Il tasto 'invio' ti mostrera' una rappresentazione 
grafica di questa trasformazione nella finestra di edit, insieme all'immagine 
di Fern. 
Premendo un tasto tra '1' e '4' e poi 'invio' potrai vedere la 
rappresentazione di ogni trasformazione di Fern.
Potresti anche selezionare il modo ShowAll (tasto 'h') e avere una 
rappresentazione contemporanea di tutte le quattro trasformazioni che 
compongono l'Iterated Function System di Fern.
La regola con cui le trasformazioni sono rappresentate e' semplice. Per 
mostrare l'azione di una particolare trasformazione, si prende il bordo 
dell'intera finestra quadrata dentro cui il frattale e' disegnato e lo si 
modifica secondo la trasformazione scelta.
L'azione complessiva di ognuna delle trasformazioni (che sono dette "affini") 
che compongono ogni IFS puo' essere decomposta in tre azioni elementari:
(i)     Contrazione:
	Si prende l'intera finestra quadrata e la si comprime lungo le 
	direzioni x (orizzontale) e y (verticale) di un fattore sx e sy 
	rispettivamente. Il risultato e' un parallelogramma con un area piu' 
	piccola di quello di partenza di un fattore sx*sy.
(ii)    Rotazione:
	I lati orizzontali e verticali del parallelogramma ottenuto con 
	l'operazione (i) vengono ruotati di un angolo fx e fy rispettivamente.
(iii)   Traslazione:
	Infine, il risultato delle operazioni (i) e (ii) viene spostato 
	orizzontalmente e verticalmente di tx e ty rispettivamente.
Ognuna delle trasformazioni che fanno parte di un particolare IFS e' 
responsabile di un particolare elemento dell'autosimilarita' dell'Oggetto 
Frattale disegnato.
Per esempio, la trasformazione #3 fa si' che il primo livello di foglie di 
Fern sia similare all'intera Fern. 
Seleziona ora la trasformazione #3 (con il tasto attivo '3') e poi l'opzione 
Rotate (con il tasto 'r'). Nota che non c'e' bisogno di premere 'invio' se 
selezioni una delle opzioni del menu Change Transformations dopo il numero 
della trasformazione da modificare. Un messaggio in basso a sinistra dello 
schermo ti suggerisce di usare i tasti freccia (arrow) per modificare la 
trasformazione selezionata #3. Con il tasto di freccia sinistro, la 
trasformazione ruotera' in senso antiorario.
Ora Fern appare spezzata in piccoli pezzi composti da due foglie contrapposte. 
Fern puo' essere ricomposta ruotando in senso orario la trasformazione #4.  
Il risultato finale e' che l'intera Fern e' ora curvata verso sinistra e non 
verso destra come all'inizio.
Ora puoi ritornare al menu principale con 'esc' e la nuova figura frattale 
puo' essere salvata sul disco con l'opzione Save IFS File (tasto 's'). 
Operando cosi' potrai spostare, ruotare o ridimensionare ogni trasformazione 
e quindi creare altri nuovi Oggetti Frattali.
Tenta di giocare un po' con queste opzioni. 
Un'altra caratteristica interessante di FOE e' l'opzione Change World 
(tasto 'w') del menu principale. Change World ti da la possibilita' di 
spostare, ruotare o ridimensionare l'intero Oggetto Frattale. Nota che 
cambiando l'orientazione di un Oggetto Frattale nella finestra di edit 
in effetti si crea un nuovo Oggetto Frattale le cui trasformazioni IFS 
sono diverse da quello di partenza. Tutte le trasformazioni dell'oggetto 
originario sono automaticamente modificate per soddisfare la nuova forma. 
Tra l'altro, l'opzione Flip ti permette di ottenere un' immagine speculare 
dell'Oggetto Frattale di partenza.
Tentiamo ora di disegnare il ben conosciuto Triangolo di Sierpinski partendo 
da zero.
Vai al menu principale e premi il tasto 'n' per attivare l'opzione New IFS 
file, che ti permette di cominciare a creare un nuovo Oggetto Frattale. 
Questo e' lo schermo che appare quando cominci a lavorare con FOE. Premi ora 
il tasto '1' per selezionare l'unica trasformazione presente in questa 
finestra. Essa corrisponde ad una contrazione dell'intera finestra di edit, 
senza rotazione o traslazione. Questa semplice trasformazione e' responsabile 
del singolo punto presente nel centro della finestra di edit (che percio' non 
e' veramente vuota). Usando il tasto 't', seleziona l'opzione di traslazione 
e tenta di spostare il quadrilatero che rappresenta la trasformazione verso 
l'alto (freccia in alto).
Aggiungi una nuova trasformazione usando il tasto 'a'. Essa sara' tracciata 
sovrapposta alla trasformazione #1. Con il tasto 't' e gli appropriati tasti 
freccia muovila nell'angolo inferiore sinistro della finestra di edit.
Le due trasformazioni IFS tracciano la linea obliqua che e' apparsa nella 
finestra di edit. Per vedere le due trasformazioni contemporaneamente, 
seleziona l'opzione ShowAll con il tasto 'h'. Questa opzione appare in 
un menu secondario attivo, in fondo a sinistra sul tuo schermo.
Aggiungendo una terza trasformazione (tasto 'a'), che sara' tracciata 
identica a quella selezionata al momento, e muovendola in fondo a destra 
nella finestra di edit (tasti 't' e freccia), il Triangolo di Sierpinski 
assume la sua forma inconfondibile.

Buon lavoro con FOE!

Gioca ed impara!

Descrizione generale di Fractal Object Editor

Menu principale (Main menu)
	Tasto           Azione                           
	N       Crea un nuovo file IFS composto da una sola                     
		trasformazione. E' il punto di partenza per creare              
		nuovi Oggetti Frattali. 
	L       Chiude il Menu principale ed attiva la finestra                         
		Choose File per gestire i file su disco.
	S       Salva l'oggetto frattale su disco nella directory                        
		attiva. 
	D       Chiude il Menu Principale ed attiva la finestra                         
		Choose sottodirectory per cambiare la directory                   
		attiva.
	W       Chiude il Menu Principale ed attiva il menu Change              
		World, che permette modifiche all'intera figura                         
		frattale, agendo su tutte le trasformazioni contemporaneamente.
	U       Flag che permette di scegliere tra il calcolo con                       
		numeri interi o reali. Il modo con interi e' piu' veloce,                 
		ma meno preciso. E' indicato per macchine anziane               
		(80286) senza coprocessore matematico.
	Tasti Numerici     permettono di scegliere una trasformazione.          
		Ogni trasformazione e' identificata da un numero.                
		Chiudono il Menu Principale ed attivano il menu                         
		Change Trsf.
	Esc     Abbandono di  Fractal Object Editor e ritorno al DOS.
	Opzioni nascoste
	P       Chiude il menu principale ed attiva la finestra di stampa               
	(Print Mode window).    

Menu Change Trsfs
	Tasto                  Azione                           
	S       ridimensiona la trasformazione scelta.
	Tasti attivi:
		tasti freccia   dilata o restringe lungo x o y 
		  PgUp          dilata lungo x e lungo y
		  End           restringe lungo x e lungo y
	T       sposta la trasformazione selezionata.
	Tasti attivi:
		tasti freccia   muove in una delle quattro direzioni                            
				possibili
	R       ruota la trasformazione selezionata.
	Tasti attivi:
		tasti freccia oriz.     ruota in senso orario o antiorario
		tasti freccia vert.     deformazione di taglio verso il                                         
					basso o l'alto
		PgUp                    deformazione di taglio verso destra
		Home                    deformazione di taglio verso sinistra
	P       cambia la probabilita' associata con la trasformazione attiva.
	Tasti attivi:
		tasti freccia   aumenta  o diminuisce la probabilita'
	M       cambia il numero che si riferisce alla trasforma 
		attiva scambiandola con un'altra di tua scelta.
	A       aggiunge una trasformazione al frattale. la                     
		trasformazione aggiunta e' identica a quella attiva al           
		momento.
	E       cancella la trasformazione attiva.
	+ -     scelta degli incrementi usati per spostare, ruotare o           
		ridimensionare una trasformazione.
	* /     cambio del numero di punti minimo usati per                     
		tracciare un frattale prima di accettare un nuovo                       
		comando.
	H       mostra tutte le trasformazioni che compongono un                
		frattale contemporaneamente. 
	Esc     abbandona il menu Change Trsfs e ritorna al menu                
		principale.
	Opzioni nascoste 
	U       assegna la stessa probabilita' a tutte le trasformazioni          
		del frattale trattato.

Menu Change World
	Tasto                  Azione                           
	S       ridimensiona l'intero Oggetto Frattale
	Tasti attivi:
		tasti freccia   dilata o restringe lungo x o y                    
		  PgUp          dilata lungo x e lungo y
		  End           restringe lungo x e lungo y
	T       sposta l'intero Oggetto Frattale.
	Tasti attivi:
		tasti freccia   muove in una delle quattro direzioni                            
				possibili
	R       ruota l'intero Oggetto Frattale.
	Tasti attivi:
		tasti freccia oriz.     ruota in senso orario o                                                 
					antiorario
	F       fornisce l'immagine speculare dell'Oggetto Frattale.
	+ -     scelta degli incrementi usati per spostare, ruotare o           
		ridimensionare l' Oggetto Frattale attivo.
	Esc     abbandona il menu Change World e ritorna al menu                
		principale.
Opzioni nascoste:
	N       Normalizza i parametri del file IFS selezionato

Modo Stampa (Print Mode)
	Tasto                  Azione                           
	S       ridimensiona l'intero Oggetto Frattale.
	Tasti attivi:
		tasti freccia   dilata o restringe lungo x o y                    
		  PgUp          dilata lungo x e lungo y
		  End           restringe lungo x e lungo y
		  End   restringe lungo x e lungo y
	T       sposta l'intero Oggetto Frattale.
	Tasti attivi:
		tasti freccia   muove in una delle quattro direzioni                            
				possibili
	R       ruota l'intero Oggetto Frattale.
	Tasti attivi:
		tasti freccia oriz.     ruota in senso orario o                                                 
					antiorario
	F       fornisce l'immagine speculare dell'Oggetto Frattale.
	B       traccia un bordo sulla finestra del modo stampa.
	I       inverte il colore di fondo con il colore di disegno.
	Esc     abbandona il modo Print e ritorna al menu                       
		principale.

Nota:
Per stampare l'immagine frattale della finestra del modo Print, bisogna 
utilizzare un programma esterno a FOE. Per esempio il Print Screen del 
DOS 5.0 o superiore o un'altra utility equivalente.

Finestra Choose SubDir
	Tasto                  Azione                           
	tasti freccia   muove il cursore in una delle quattro                           
			direzioni possibili
	Invio   seleziona la nuova sottodirectory, chiude la finestra             
		Choose  SubDir e attiva la finestra Choose File per             
		selezionare un file di lavoro.          

Finestra Choose File
	Tasto                  Azione                           
	tasti freccia   muove il cursore in una delle quattro direzioni 
			possibili
	E       cancella il file IFS corrente
	C       copia il file IFS corrente in una nuova sottodirectory:                   
		chiude la finestra Choose File, attiva la finestra                      
		Choose SubDir e seleziona la sottodirectory di                  
		destinazione.
	R       rinomina il file IFS selezionato.
	D       chiude la finestra Choose File ed attiva la finestra                    
		Choose SubDir.
	M       crea una nuova sottodirectory. Chiude la finestra                       
		Choose File  e attiva la finestra Choose SubDir.
	Invio   seleziona il nuovo file IFS, chiude la finestra                         
		Choose File ed attiva il menu principale.       
