Laurea in Informatica

Corso Grafica Interattiva (a.a. 2004-2005)

DISI

Attenzione: da martedi' 2/11/04 fino a nuovo ordine le lezioni del martedi' cominciano alle ore 9:00!!!!!

Turni di laboratorio a FREQUENZA OBBLIGATORIA

  • giovedì 14/10/04 ore 11-13 in SW2
  • martedì 19/10/04 ore 9-11 in SW2
  • giovedì 21/10/04 ore 11-13 in SW2
  • giovedì 4/11/04 ore 11-13 in SW2
  • giovedì 18/11/04 ore 11-13 in SW2
  • giovedì 25/11/04 ore 11-13 in SW2
  • giovedì 2/12/04 ore 11-13 in SW2
  • giovedì 9/12/04 ore 11-13 in SW2
  • giovedì 16/12/04 ore 11-13 in SW2


Ricevimento studenti: mercoledì 14:30-16:30

Pre-requisiti

Per seguire questo corso è necessario avere assimilato i concetti e le nozioni seguenti (tra parentesi i corsi di riferimento): 
  •  Linguaggio C, strutture dati di base (Programmazione)
  • Strutture dinamiche, puntatori (Algoritmi e strutture dati)
  • Programmazione Object Oriented (Linguaggi di programmazione)
  • Programmazione event-driven, progrttazione di interfacce (Interfacce utente)
  • Vettori, matrici, trasformazioni di coordinate (Geometria) - Auspicabile ma non indispensabile

Obiettivi

  • Apprendimento dei fondamenti teorici, delle tecniche e delle metodologie necessarie alla progettazione e realizzazione di applicazioni interattive di grafica tridimensionale (3D)
  • Elementi di strutture dati ed algoritmi per la modellazione geometrica e la modellazione di scene 3D
  • Apprendimento ed uso di strumenti per la progettazione di sistemi grafici interattivi basati su C++, OpenGL e GLUT in ambiente Linux

Orario

  • Martedì 8-11 Aula 505
  • Giovedì 11-13 aula 505
  • Laboratorio SW1 al posto di una delle lezioni (su avviso del docente)

Testi consigliati

Tutti i testi (esclusi quelli in rete) dovrebbero essere disponibili in biblioteca.

Testo base per la computer graphics:

  • Edward Angel, 1999, Interactive Computer Graphics: A top-down approach with OpenGL (2nd edition) Addison Wesley, ISBN: 020138597X 
Testi di approfondimento per la computer graphics:
  • Foley, van Dam, Feiner, Hughes, Computer Graphics Principles and Practice (Second edition in C), 1996, Addison Wesley, 1175 pages.
  • Hearn, Baker, Computer Graphics (2nd edition), 1994, Prentice Hall, 652 pages.
  • Hill, Computer Graphics using Open GL, 2000, Prentice Hall, 922 pages.
Testo base per OpenGL:
  • Mason Woo, Jackie Neider, Tom David, Dave Shriner, 1999, OpenGL 1.2 Programming Guide, 3rd edition: the official guide to learning OpenGL, Version 1.2,  Addison Wesley, ISBN:0201604582 
Testo base per GLUT: Testo di base per GLUI: Testo base per C++:
  • M. Black, Java to C++ transition tutorial:  www.cs.brown.edu/courses/cs032/resources/C++tutorial.html
  • B. Stroustrup,  The C++ Programming Language (3rd edition). Addison Wesley Longman, Reading, MA. 1997. ISBN 0-201-88954-4. 920 pages

  • disponibile anche in italiano: 
    B. Stroustrup: C++ Linguaggio, Libreria Standard, Principi di Programmazione 3a Edizione, Addison Wesley Italia, 1015 pagine, 2000, ISBN:8871920783. 1015 pagine 
    oppure:
    S. Oualline, C++ Corso di programmazione, O’Reilly-Jackson libri, 1998, ISBN: 88-256-1022-X. 558 pagine.
Va bene qualunque altro manuale di C++

Materiale didattico

Per il materiale di laboratorio fare riferimento alla pagina apposita.

Lezioni: 

Risorse software:

OpenGL
  • La pagina principale www.opengl.org (notizie utili, documentazione. C'è anche il software open source di prova, ma non è consigliato) 
  • Mesa (versione public domain di OpenGL): http://www.mesa3d.org (download sw. consigliata)
GLUT


Regolamento ed Esami

Il corso prevede lezioni in aula e attività di laboratorio guidato.

Le attività di laboratorio guidato vanno seguite singolarmente o a gruppi di al più due persone e sono a frequenza obbligatoria:

  • sarà rilevata la presenza degli studenti in laboratorio;

  • uno studente può sostenere l'esame solo se ha partecipato ad almeno il 50% delle attività di laboratorio guidato;
  • non si prevede nessuna forma di recupero, pertanto chi non frequenta il minimo richiesto delle attività di laboratorio guidato non potrà sostenere l'esame durante questo anno accademico.
Le attività di laboratorio guidato si terranno una volta la settimana, presumibilmente a turno unico e in orario di lezione, a partire dalla seconda settimana di ottobre 2004. Il calendario dettagliato sarà sia annunciato a lezione che pubblicato su questa pagina web con almeno una settimana di anticipo su ogni lezione di laboratorio.

L'esame consiste di:

  • alcune (indicativamente cinque) prove in itinere, di carattere pratico, da completare e consegnare individualmente durante lo svolgimento del corso.
    • Queste prove consisteranno essenzialmente nel completamento di esercizi incominciati durante i laboratori guidati
    • Il carico di lavoro previsto sarà moderato (tali da non generare conflitti con la frequenza alle lezioni degli altri corsi, nell'ambito del coordinamento tra i corsi stessi)
    • La scadenza per la consegna di una ogni prova sarà comunicata contestualmente con l'assegnazione della prova stessa.
    • Testi delle prove e scadenze saranno pubblicati su questa pagina web o su quella di laboratorio.
  • una prova orale, che può prevedere sia domande sulla teoria che lo svolgimento di esercizi.
Per le date degli esami vedere il web


FAQ

Q: Ho scelto il curriculum software/sistemi quindi non ho fatto MC2 e geometria. Posso lo stesso seguire questo corso? 
A: Sì. Potrebbe essere necessario studiare un pochino di più per capire le trasformazioni di coordinate.

Q: Come mi procuro OpenGL/MESA e GLUT? 
A: Vedere i link nella sezione materiale didattico.

Q: Posso fare il progetto in un linguaggio diverso da C++ e/o con un’API diversa da OpenGL e/o con un toolkit diverso da GLUT? 
A: NO. Si devono usare tutte queste risorse e nessun altra non esplicitamente proposta nell’ambito del corso.

Q: Posso sviluppare in ambiente Windows? 
A: Sì, purché il progetto poi compili e funzioni anche in ambiente Linux. Le risorse necessarie a sviluppare sono disponibili (gratis) anche sotto Windows. Non si accetterà però nulla che non funzioni sotto Linux. 

Q: Le lezioni/labo si sovrappongono con quelle di altri corsi che seguo. Cosa posso fare? 
A: Se il problema è il labo, possiamo cercare di cambiarvi di turno. In generale: se siete in una situazione “standard” fatecelo presente e vedremo di modificare gli orari se possibile. Se invece siete in una situazione particolare (esami indietro, lavoro, …) fatecelo presente lo stesso, ma non credo potremo farci granché.

Q: Ho fatto un programma e non funziona. Come mai? 
A: Quando qualcosa non funziona siate, per favore, precisi. Cosa fallisce? compilazione, linking, esecuzione. Se fallisce la compilazione o il linking, non arrendetevi subito: leggete i messaggi del compilatore riguardo all'errore e cercate di capire perché non compila. Se fallisce durante l'esecuzione usate il debugger per vedere dove avviene il fallimento del programma. Se non riuscite da soli, provate a chiedere aiuto ad un collega. Se anche questo tentativo fallisce, segnatevi dettagliatamente come avviene il fallimento e, insieme ai colleghi con cui avete provato, venite a chiederci aiuto. Negli orari di ricevimento!

Pre-requisiti

Obiettivi

Orario

Testi di Riferimento

Materiale didattico

Laboratorio

Esami

FAQ