Progetto Fireworks Simulatore di spettacoli pirotecnici

Slides:



Advertisements
Presentazioni simili
Linguaggio C e C++.
Advertisements

Informatica Modulo 2 – Office Word.
Lezione 18 MIDI e XML Programmazione MIDI (Prof. Luca A. Ludovico)
I linguaggi di programmazione
Sintassi (prima parte)
Ogni PC, per iniziare a lavorare, ha bisogno di un sistema operativo. Infatti questo è il primo programma che viene eseguito e che permette all'utente.
L’Informatica dal Problema alla Soluzione
SPECIFICA LOOSE DELLE MAPPE FINITE v. 1.1 Gianna Reggio
Inferenza Statistica Le componenti teoriche dell’Inferenza Statistica sono: la teoria dei campioni la teoria della probabilità la teoria della stima dei.
TW Analisi dei documenti n Classificazione dei componenti n Selezione dei componenti, costruzione della gerarchia, dei blocchi informativi e degli elementi.
1 Analisi Finanziaria I Programmare i flussi a breve termine Università Ca Foscari di Venezia.
Portate di piena Celada Chiara Matricola:
Unità Didattica 2 I Linguaggi di Programmazione
Corso di Laurea in Ingegneria per lAmbiente e il Territorio Informatica per lAmbiente e il Territorio Docente: Giandomenico Spezzano Tutor: Alfredo Cuzzocrea.
Realizzazione di una stazione meteorologica
INSIEMI NUMERABILI L’analisi matematica introduce il concetto di insieme numerabile come insieme i cui elementi possono essere “contati” ossia che possiede.
AN FI Concetti. Linguaggi di alto livello u Hanno capacita' espressive superiori a quelle del linguaggio macchina u Suggeriscono concetti e modi.
EasyDLX Università degli Studi di Bologna Facoltà di Ingegneria Un linguaggio che realizza un sottoinsieme dellInstruction Set Architecture del DLX Realizzato.
Modulo 7 – reti informatiche u.d. 3 (syllabus – )
Progetto per lesame di Linguaggi e Modelli Computazionali LS Chiara Chiara Gualtieri.
A D IET – P ROGETTO PER L ESAME DI L INGUAGGI E M ODELLI C OMPUTAZIONALI LS Prof. Enrico Denti Sviluppato da Fabio Bracci – AA 2009/2010.
Lezione 12 Riccardo Sama' Copyright Riccardo Sama' Excel.
ANTLR V.3 Renzi Alberto.
Linguaggi e Modelli Computazionali M Prof. Enrico Denti
Un report è in grado di personalizzare la stampa delle informazioni rispetto alla stampa di una tabella, di un recordset o di una maschera. I report possono.
Progetto desame di Gianluca Gallo Linguaggi e modelli computazionali LM Prof. Enrico Denti.
Linguaggi e Modelli Computazionali LS - Prof E.Denti
CineMan Linguaggio per la descrizione della programmazione di cinema
Corso di Laurea Specialistica in Ingegneria Informatica Itinerari aerei Progetto per lesame di Linguaggi e Modelli Computazionali LS realizzato da Stefano.
LINGUAGGIO PER LA DESCRIZIONE DI ESERCITI E LA CREAZIONE DI LISTE PER IL GIOCO DI BATTAGLIE TRIDIMENSIONALI WARHAMMER FANTASY WarArmy Linguaggi e Modelli.
S ::= Formazione Formazione ::= NomeSquadra Team NomeSquadra ::= Team ::= Schema Tabellino | Tabellino Schema ::= Difesa Tabellino ::= ElencoTitolari.
Linguaggio per la generazione di biglietti da visita
Linguaggi e Modelli Computazionali a.a. 2009/2010
Gianfranco Zampolini Progetto per il corso di: Linguaggi e Modelli Computazionali LS EM Linguaggio per la Descrizione di un Evento Musicale.
Corso di Laurea Specialistica in Ingegneria Informatica Model Drive Applicazione per il pilotaggio di veicoli Esame di Linguaggi e Modelli computazionali.
Linguaggi e modelli computazionali LS
Progetto di un linguaggio e interprete per giocare a MemoryPlus Progetto di:Docente: Vito La PortaEnrico Denti.
- Modulo AM3 - Corso Avanzato Word
runhome Progetto di Linguaggi e Modelli Computazionali LS Luca Bueti
Corso di Laurea Specialistica in Ingegneria Informatica Previsione dei Consumi Elettrici = Progetto per lesame di Linguaggi e Modelli Computazionali LS.
Un linguaggio ed un interprete per il gioco Citadels
Progetto don’t you forget
Tablabla Progetto di Valent Cristina
SQL File Manager un nuovo modo di gestire il filesystem….
Università degli Studi di Bologna Facoltà di Ingegneria Anno Accademico 2007/2008 Laurea Specialistica in Ingegneria Informatica Linguaggi e Modelli Computazionali.
Chess Game Visualizer Un interprete per Short Algebraic Notation Progetto per lesame di Linguaggi e modelli computazionali LS prof. Denti – A.A. 2007/08.
Linguaggi per COMUNICARE
Linguaggi e modelli computazionali LS Manni Tiziano
Costruire una tabella pivot che riepiloghi il totale del fatturato di ogni agente per categorie di vendita, mese per mese. Per inserire una tabella pivot.
ATTIVITÀ PROGETTUALE LINGUAGGI E MODELLI COMPUTAZIONALI L-M Un linguaggio per la descrizione di coreografie giocabili STUDENTE: BACCHILEGA SIMONE A.A 2013/2014.
Rappresentazione delle durate Lezione 7 Programmazione per la Musica | Prof. Luca A. Ludovico.
PERCEZIONE Processo psicologico di creazione di un’immagine interna del mondo esterno.
LABVIEW Sommario Che cosa è uno strumento virtuale (VI) creato con LABVIEW Parti di un VI: pannello frontale diagramma a blocchi Confronto tra il principio.
CORSO Di WEB DESIGN prof. Leonardo Moriello
OpenProj: una valida alternativa a MS Project
Word: gli strumenti di formattazione
1 Corso di idoneità informatica Autore: G. Lorusso URL: Università del Piemonte Orientale.
DRAUGHTS Linguaggi e Modelli Computazionali LS Linguaggio e interprete per effettuare una partita di dama inglese contro un’intelligenza artificiale Progetto.
Giannicola Spezzigu Accordo: sovrapposizione di 3 o più suoni Ogni sigla denota un accordo, ossia i suoni da cui esso è formato Accordi e.
Trading EToro Un linguaggio per descrivere e gestire operazioni di borsa Progetto di Linguaggi e Modelli Computazionali LS Prof. Enrico Denti Mancini Laura.
Progetto di Linguaggi e modelli computazionali M Prof. Enrico Denti Progetto di: Francesco Paci.
DerIntCalculator La calcolatrice per integrali e derivate Progetto di Linguaggi e Modelli Computazionali M Prof. Enrico Denti Realizzato da: Gabriella.
Linguaggi e Modelli Computazionali LS Anno Accademico 2007/2008 Alessio Della Motta Un linguaggio per descrivere partite di Maraffone: il gioco più popolare.
CAKE Ambiente per la scrittura e la riproduzione audio di ricette per torte Linguaggi e Modelli Computazionali LSElisabetta Visciotti.
1 Macchine astratte, linguaggi, interpretazione, compilazione.
ELABORAZIONE TESTI MICROSOFT WORD EM 09.
Eye Computer Sistema per l'interazione con un computer dotato di controllo oculare Linguaggi e modelli computazionali LS Realizzato da: Ciavarella Primiano.
Tecnologie informatiche. PowerPoint CREA UNA PRESENTAZIONE.
EVENTI Gli eventi sono delle azioni che possono essere identificate da javascript. 1 - onMouseOver, che viene messo in atto quando l'utente fa scorrere.
Parsing ricorsivo discendente Il parsing ricorsivo discendente (recursive descent parsing) è un metodo di tipo top-down che può essere facilmente codificato.
Transcript della presentazione:

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

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

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

Grammatica 1/4 SCOPO <Fireworks> = Impostazioni<Impostazioni>Fine{<Batteria>}<EOF> <Impostazioni> = <Sfondo>;<VelocitaSimulazione>;<Meteo>; <Batteria> = Batteria{<Istruzione>;}Fine <Istruzione> = <Sparo>|<Intervallo>|<Colore> STRUTTURA DEL LINGUAGGIO

Grammatica 2/4 VELOCITA SIMULAZIONE <VelocitaSimulazione>=Velocita(<Velocita>) <Velocita>=Alta|Media|Bassa <Sfondo>=Carica(<Id>) <Meteo>=(Sereno|<NonSereno>) <NonSereno>=<Precipitazione>,<Num>,<Num> <Precipitazione>=Vento|Pioggia|Neve SFONDO CONDIZIONI ATMOSFERICHE

Grammatica 3/4 <Intervallo>=Ritardo(<Num>) ATTESA <Colore> = Colore(<Num>-<Num>-<Num>) <Sparo> = Sparo(<TipoSparo>: <ParametriPosizione><ParametriLuce>,<Scia>,<Scoppio>) <ParametriPosizione> = <Num>,<Num>,<Num> <ParametriLuce> = <Num>,<Num>,<Num>,<Num>,<Num> <TipoSparo> = Girandole | StelleFilanti | Puntini <Scia> = Scia_Si | Scia_No <Scoppio> = Secco | Normale | Sfrigolante ATTESA COLORE FUOCHI

Grammatica 4/4 NUMERI POSITIVI < Id: ( ["a"-"z"] (["a"-"z"]|["0"-"9"]|"."|"\\"|":\\")* ) > NUMERI POSITIVI IDENTIFICATORI

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

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

Linguaggio 2/3 Batteria Ritardo(5); Colore(200-120-80) Impostazione di un ritardo dall’ultima esplosione. Colore(200-120-80) Dominio [0 - 255] per ogni canale Colore dello sparo. Sparo(<Tipo><Param. posizione><Param.luce><Scia><Scoppio>) Fuochi artificiali. Tutti i vari parametri. Fine

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

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). 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). 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.)

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 S1 S2 S3 2 4 6 8 10 sec. Conseguenze: gli spari non vengono innescati contemporaneamente, mentre se la durata di Si > Si+1 è possibile la rappresentazione contemporanea di Si ed Si+1.

Scelte progettuali 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 l’istante di innesco “assoluto”. 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; l’altro disegna un albero su un pannello per mostrare la struttura dello spettacolo pirotecnico. 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 !

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

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

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

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

Architettura: visitor Automaticamente generato da JTB. Genera la visualizzazione dell’albero. Genera lo spettacolo pirotecnico.

Diagramma delle classi (semplificato)

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

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

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.

DEMO A S T R T !