La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Progetto Fireworks Simulatore di spettacoli pirotecnici Linguaggi e Modelli Computazionali LS Francesco Ferri.

Presentazioni simili


Presentazione sul tema: "Progetto Fireworks Simulatore di spettacoli pirotecnici Linguaggi e Modelli Computazionali LS Francesco Ferri."— Transcript della presentazione:

1 Progetto Fireworks Simulatore di spettacoli pirotecnici Linguaggi e Modelli Computazionali LS Francesco Ferri

2 Obiettivi di progetto Definire un interprete per il linguaggio definito. Generare una simulazione in grafica 2D in grado di riprodurre spettacoli pirotecnici il più fedelmente possibile. Realizzare un linguaggio in grado di descrivere uno spettacolo di fuochi artificiali. Luci e spari. Condizioni atmosferiche. Strutturato. Suoni. Espressivo. Di facile comprensione e utilizzo.

3 ScreenShot Pannello principale Pannello per la simulazione Struttura ad albero della simulazione Stima durata simulazione Barra di scorrimento temporale Posizione Cursore

4 Grammatica 1/4 = Impostazioni Fine{ } = ; ; ; = Batteria{ ;}Fine = | | SCOPO STRUTTURA DEL LINGUAGGIO

5 Grammatica 2/4 =Velocita( ) =Alta|Media|Bassa =Carica( ) =(Sereno| ) =,, =Vento|Pioggia|Neve VELOCITA SIMULAZIONE SFONDO CONDIZIONI ATMOSFERICHE

6 Grammatica 3/4 =Ritardo( ) = Colore( - - ) = Sparo( :,, ) =,, =,,,, = Girandole | StelleFilanti | Puntini = Scia_Si | Scia_No = Secco | Normale | Sfrigolante ATTESA COLORE FUOCHIFUOCHI

7 NUMERI POSITIVI IDENTIFI CATORI Grammatica 4/4

8 Struttura del linguaggio Impostazioni Fine [ Impostazioni generali ] Batteria Fine [ Istruzioni ] 1 1..N

9 Il linguaggio 1/3 Impostazioni Fine Sfondo(Capodanno_a_Venezia.jpg); Velocita(Media); Meteo(Pioggia,10,30); E possibile impostare una immagine di sfondo. Si richiede di specificare una velocità di simulazione: Alta(10x), Media(5x) o Bassa(1x). Indicazioni di condizioni atmosferiche: Sereno oppure Vento, Pioggia o Neve e indicazione di intensità e direzione. Dominio [0+K* K*180] con K 0

10 Linguaggio 2/3 Fine Batteria Ritardo(5); Colore( ) Sparo( ) Impostazione di un ritardo dallultima esplosione. Colore dello sparo. Fuochi artificiali. Dominio [ ] per ogni canale Tutti i vari parametri.

11 Linguaggio 3/3 Sparo( ) Param. di posizione Param. di luce Scia Ascissa punto innesco Ordinata punto innesco Altezza esplosione Numero luci Durata luci Dimensione sparo Energia Si / No Scoppio Sfrigolante / Secco / Normale Tipo StelleFilanti/Puntini/Girandole Dimensione luce

12 Grammatica & Linguaggio: considerazioni La grammatica è di tipo 2, ma il linguaggio generato è di tipo 3 (Classificazione di Chomsky), infatti: Self-embedding assente il linguaggio è regolare La grammatica è LL(1). Nella grammatica è assente la stringa vuota ε; esiste una tecnica di riscrittura in grado di eliminare sempre la stringa vuota da tutte le produzioni tranne lo scopo (S ε, dove S non compare nella parte destra di alcuna produzione. ) Ciascuna produzione che presenta alternative nella sua parte destra ha insiemi di Starter Symbols disgiunti e la stringa vuota è assente condizione necessaria e sufficiente per affermare che la grammatica è LL(1).

13 Scelte progettuali Il tempo : ogni sparo ha una sua durata; è possibile indicare dei ritardi rispetto allo sparo precedente. Ogni sparo possiede un tempo fisico di innesco, empiricamente pari a 2 secondi. Batteria Ritardo(3); Sparo(Girandole:120,300,350,3,1,2,80,300,Si,Sfrigolante); Ritardo(1); Sparo(StelleFilanti:80,340,500,1,2,2,60,300,No,Secco); Sparo(StelleFilanti:100,300,400,2,2,2,90,300,No,Secco); Fine sec.8 S1S2 S3 Conseguenze: gli spari non vengono innescati contemporaneamente, mentre se la durata di S i > S i+1 è possibile la rappresentazione contemporanea di S i ed S i+1.

14 Scelte progettuali Due visitor: uno è indispensabile per riempire correttamente la tabella degli eventi, per settare le impostazioni generali della simulazione e per trasformare le grandezze in ingresso in grandezze nel dominio dei fuochi di artificio; laltro disegna un albero su un pannello per mostrare la struttura dello spettacolo pirotecnico. Tabella degli eventi : ogni fuoco pirotecnico è considerato come un evento e viene inserito in una apposita HashTable; un evento contiene tutti i parametri relativi allo sparo da lanciare e listante di innesco assoluto. Motore grafico (Engine) come singleton : è la classe che si occupa di rappresentare graficamente la simulazione e ne scandisce il tempo. Comunica a stretto contatto con la Tabella degli eventi per reperire su bisogno quello più prossimo. E progettato con forte idea di riuso: la tabella consente di disaccoppiare il motore grafico ed i visitor. Realizzare un nuovo motore grafico e sostituirlo a quello esistente diventa molto semplice !

15 Stelle Filanti 48 Tabella eventi ed Engine Stelle Filanti Girandole Puntini Tabella Eventi getLastEvent() Return evento Parametri Motore grafico Fireworks Visitor addEvent(Event evento) Pannello Simulazione Draw(evento)

16 Architettura AST Fireworks Parser Fireworks Visitor Tree Visitor Sorgente Valutazione spettacolo Albero

17 Architettura : packages SuonoEsplosione.java Eventi.java TabellaEventi.java LetturaFileTxt.java TreePanel.java MainPanel.java Fuoco.java Girandole.java FireworksParser.java Engine.java TokenMngError.java Token.java Scia.java Sfondo.java Meteo.java Sparo.java DepthFirstVisitor.java FireworksVisitor.java TreeVisitor.java … … …… …

18 Architettura: parser Classi generate automaticamente da javaCC a partire dalla grammatica. Parser Lexer

19 Architettura: visitor Genera la visualizzazione dellalbero. Genera lo spettacolo pirotecnico. Automaticamente generato da JTB.

20 Diagramma delle classi (semplificato)

21 Test Test di utilizzo dellapplicazione finale da parte dellutente finale. Inserimento di frasi corrette e di frasi non corrette e verifica della risposta del parser. Classi di test per verificare il funzionamento corretto dei componenti ritenuti più complessi, quindi quelli con più alta probabilità errore, omissione o bug. 1) Ritardo(-20); numeri negativi non ammessi 2) Sparo Girandole(…)); ( mancante 3) Impostazioni EOF incontrato: mi aspettavo Carica 4) Colore( ) NUM mancante n) …

22 Strumenti utilizzati Editor Java: Eclipse SDK Generazione grammatica: JavaCC 3.2 Visitor ed albero: JTB Consente la generazione di un parser per grammatiche context- free LL(k) a partire dalla grammatica. Generazione automatica della documentazione della grammatica (jjDoc). Visitor costruito automaticamente. Classi dellalbero costruite automaticamente. Le azioni semantiche sono mantenute allinterno dei visitor; se la grammatica è stabile occorre modificare solo i visitor stessi.

23 Sviluppi futuri e migliorie Arricchimento grafico della simulazione: Grafica 3D in sostituzione della 2D. Aggiunta di ulteriori categorie di sparo. Analisi collisione con oggetti presenti nello sfondo. Gestione automatica dei punti di fuga e della prospettiva. Gestione avanzata della luce: ombre, luci, riflessi. Funzionalità del software: Rendering della simulazione. Possibilità di salvare lo stream video. Descrizione grafica e non solo testuale degli spettacoli.... Tutto quello che può suggerire la mente.

24 DEMO S R A T T!


Scaricare ppt "Progetto Fireworks Simulatore di spettacoli pirotecnici Linguaggi e Modelli Computazionali LS Francesco Ferri."

Presentazioni simili


Annunci Google