PRECEDENTE      SUCCESSIVO
RELAZIONE DEL PROGRAMMA

    INDICE

  1. INTRODUZIONE
  2. IMPLEMENTAZIONE E FUTURI SVILUPPI
  3. MANUALE D'USO
  4. ESEMPI DI STRINGHE
  5. APPLET
  6. LISTATO DEL PROGRAMMA


INTRODUZIONE

Questo programma genera un frattale partendo da una stringa di input e sostituendo ad essa, una stringa di sostituzione; questo procedimento viene iterato più volte fino ad ottenere un frattale sempre più elaborato e complesso.
Entrambe le stringhe, che devono rispettare delle regole di sintassi ben precise, vengono inserite dall'utente che può così decidere che forma assumerà il frattale.
L'idea di base di costruire un generatore di frattali di questo tipo, è stata tratta da alcune fotocopie distribuite dal docente del corso.

PRECEDENTE      INDICE      SUCCESSIVO     


IMPLEMENTAZIONE E FUTURI SVILUPPI

Il programma è stato realizzato sotto forma di applet Java (con JDK 1.2) in modo tale da poter essere inserito all'interno di pagine HTML visualizzabili da un browser.
Le scelte implementative per quanto riguarda l'interfaccia utente sono state le seguenti:
- permettere all'utente di scegliere tra alcuni valori, sia l'ampiezza degli angoli tra i segmenti, sia la lunghezza di questi ultimi;
- permettere all'utente di specificare una stringa di input e di sostituzione diverse;
- mantenere costantemente aggiornata la rappresentazione grafica delle stringhe inserite dall'utente e visualizzarne subito ogni modifica; per permettere questo, le stringhe vengono interpretate ad ogni variazione del contenuto del campo di testo.
Le scelte implementative per quanto riguarda l'algoritmo sono state le seguenti:
- inserire un ingrandimento dell'immagine prima di visualizzarla;
- inserire dei controlli per impedire che il tempo necessario per effettuare l'ingrandimento sia eccessivo rispetto ai risultati che si potrebbero ottenere.

Struttura del programma

Il programma è formato dai seguenti metodi:
  • init
  • paint
  • interprete
  • frattale
Il metodo init si occupa di inizializzare l'interfaccia utente e di attivare l'area da disegno.
Il metodo paint è il "pittore" del programma, infatti, esso si occupa di rappresentare sull'area da disegno: tutto ciò che viene digitato dall'utente nel campo di testo (segnalando anche eventuali errori) e di rappresentare i vari stadi del frattale. Per fare questo scorre il Vector che è stato riempito di punti (rappresentanti i vertici dei segmenti) dal metodo interprete o dal metodo frattale.
Il metodo interprete si occupa di interpretare le stringhe che vengono digitate dall'utente nel campo di testo (controllando che non vengano commessi degli errori) e di memorizzare i vertici dei segmenti all'interno di un "Vector" (una struttura dati simile ad un array ma con la capacità di ampliarsi in base alle esigenze del programma) che verrà poi utilizzato dal metodo paint.
Il metodo frattale è il cuore del programma, infatti, esso si occupa di: modificare la stringa utilizzata per il disegno precedente, sostituendo ad ogni simbolo "F" la stringa di sostituzione e, memorizzando la nuova stringa al posto di quella precedente; calcolare sulla base della nuova stringa i nuovi vertici dei segmenti e momorizzarli nel Vector; effettuare un ingrandimento dell'immagine fino a superare i bordi dell'area da disegno, per poi effettuare un "passo indietro". Tutto questo senza però perdere un tempo eccessivo, grazie a dei controlli sulla lunghezza effettiva dei segmenti e sul numero di iterazioni di zoom già effettuate.
I miglioramenti che potrebbero essere apportati a future versioni sono: - permettere all'utente di specificare un valore "qualsiasi" per l'ampiezza degli angoli e per la lunghezza dei segmenti;
- permettere all'utente di controllare lo zoom;
- ampliare la grammatica delle stringhe di input e di sostituzione;
- adattare automaticamente la lunghezza dei segmenti al loro numero nelle stringhe;

PRECEDENTE      INDICE      SUCCESSIVO     


MANUALE D'USO

Per generare un frattale con l'Applet occorre procedere come segue:
1) Assegnare un'ampiezza (in gradi) agli angoli che dovranno essere generati tra i segmenti, scegliendo tra i valori indicati nella lista denominata GRADI.
2) Assegnare una lunghezza (in pixel) ai segmenti (automaticamente generati mentre si specificano le stringhe di input e di sostituzione) scegliendo tra i valori indicati nella lista denominata PIXEL.
Nel caso in cui non venisse effettuata alcuna scelta per i precedenti valori, verranno utilizzati quelli visualizzati nelle rispettive liste alla prima esecuzione dell'applet.
3) Specificare una stringa di input che sia formata da una combinazione di simboli indicati nella seguente tabella:

SIMBOLO

SIGNIFICATO

F

Disegna un segmento di lunghezza pari al valore indicato nella lista PIXEL.

+

Rotazione in senso orario (del numero di gradi indicato nella lista GRADI) della direzione di tracciamento dei segmenti.

-

Rotazione in senso antiorario (del numero di gradi indicato nella lista GRADI) della direzione di tracciamento dei segmenti.

4) Premere il bottone REPLACE.
5) Specificare una stringa di sostituzione (seguendo le stesse regole valide per la stringa di input).
6) Premere il bottone FRACT.
7) Dopo ogni costruzione e visualizzazione del frattale ripremere il bottone FRACT, per aumentare la complessità della sua struttura, oppure, premere il bottone CLEAR per specificare altre stringhe di input e di sostituzione.
Quando la struttura del frattale diventa troppo complicata e non è più possibile effettuare uno zoom per vederla, apparirà al centro dello schermo un punto verde.

PRECEDENTE      INDICE      SUCCESSIVO     


ESEMPI DI STRINGHE

NUMERO DI STADI

AMPIEZZA ANGOLI

LUNGHEZZA SEGMENTI

STRINGA DI INPUT

STRINGA DI SOSTITUZIONE

3

90°

120

F + F + F + F

F + F - F - F F + F + F - F

2

90°

80

F + F + F + F

F - FF + FF + F + F - F - FF + F + F - F - FF - FF + F

4

90°

120

+ F

F - F + F + F - F

4

90°

120

F + F + F + F

FF + F + F + F + F + F - F

4

90°

120

F + F + F + F

FF + F + F + F + FF