FONDAMENTI DI
COMPUTER GRAPHICS
Giuseppe Attardi
Anna Bernasconi
Università di Pisa
Materiale didattico del corso
Interazione Uomo-Macchina
per il Diploma Universitario in Informatica
progetto CAMPUS
a.a. 1996/97
© Copyright 1997, Giuseppe Attardi
Indice
- 1. Introduzione alla Computer Graphics 7
- 1.1 La computer graphics e le sue applicazioni 7
- 1.2 Lo sviluppo della computer graphics 7
- 1.3 I sistemi grafici interattivi 9
- 2. Architettura dei sistemi grafici 11
- 2.1 I sistemi grafici 11
- 2.2 Dispositivi di output grafico 11
- 2.2.1 Il tubo a raggi catodici 11
- 2.2.2 Grafica vettoriale e grafica raster 12
- 2.2.3 CRT a colori 13
- 2.2.4 Altri dispositivi di output grafico 15
- 2.3 Sistemi di grafica raster 16
- 2.3.1 Sistemi di grafica raster semplici 16
- 2.3.2 Sistemi di grafica raster con processore di display periferico 18
- 2.3.3 Sistemi di grafica raster con processore di display integrato 19
- 2.4 Tecnologie hardcopy 20
- 2.5 Il Controllore video 21
- 2.6 Dispositivi di input 22
- 2.6.1 Dispositivi locator 22
- 2.6.2 Dispositivi pick 23
- 2.6.3 Dispositivi valuator 23
- 2.6.4 Dispositivi tastiera 23
- 2.6.5 Dispositivi di scelta (choice) 23
- 2.7 Scanner di immagini 24
- 3. La Libreria Grafica OpenGL 25
- 3.1 Le librerie grafiche 25
- 3.2 La libreria OpenGL 26
- 3.3 Primitive e attributi 28
- 3.3.1 Vertici e segmenti 28
- 3.3.2 Poligoni 30
- 3.3.3 Testi 32
- 3.3.4 Oggetti curvilinei 33
- 3.3.5 Attributi 33
- 3.3.6 Colore 34
- 3.4 Visualizzazione 35
- 3.4.1 Matrix modes 36
- 3.5 Funzioni di controllo 37
- 3.5.1 Interazioni con il sistema Window 37
- 3.5.2 Aspect-ratio e viewport 37
- 3.5.3 L'event-loop 38
- 3.6 Esempio: Sierpinski gasket 39
- 4.
Algoritmi e Primitive per la Grafica Raster Bidimensionale 42
- 4.1 Stadi principali 42
- 4.2 Strategie di Implementazione 42
- 4.3 Scan Conversion dei segmenti 43
- 4.3.1 L'algoritmo DDA 44
- 4.3.2 L'algoritmo di Bresenham 45
- 4.4 Scan Conversion del cerchio 47
- 4.5 Scan Conversion dei poligoni 49
- 4.5.1 Flood fill 50
- 4.5.2 Algoritmo Scan-line 50
- 4.6 Clipping dei segmenti lineari 54
- 4.6.1 Algoritmo di Cohen-Sutherland 54
- 4.6.2 Algoritmo di Liang-Barsky 57
- 4.7 Clipping dei poligoni 58
- 4.7.1 Algoritmo di Sutherland-Hodgman 59
- 4.8 Antialiasing 61
- 5. Rimozione delle Superfici Nascoste 64
- 5.1 Approcci object-space e image-space 64
- 5.2 Eliminazione delle back face 65
- 5.3 L'algoritmo z-buffer 65
- 5.4 Algoritmo depth sort 67
- 5.5 Algoritmo scan line 68
- 5.6 Uso dei buffer 68
- 5.6.1 Modalità XOR 69
- 6. Viewing e Clipping in Tre Dimensioni 70
- 6.1 Il modello Synthetic-Camera 70
- 6.2 Trasformazioni viewing e modeling 71
- 6.3 Trasformazioni di viewing 72
- 6.3.1 Viewing API 72
- 6.4 Proiezioni semplici 73
- 6.4.1 Proiezioni prospettiche 736
- 6.4.2 Proiezioni ortogonali 74
- 6.5 Proiezioni in OpenGL 75
- 6.6 Matrici di proiezione parallela 77
- 6.6.1 Proiezioni ortogonali 77
- 6.6.2 Proiezioni oblique 78
- 6.7 Clipping in tre dimensioni 79
- 7. Input e Interazioni 82
- 7.1 Grafica Interattiva 82
- 7.2 Tecniche di Interazione 82
- 7.3 Client e Server 84
- 7.4 Display List 84
- 7.4.1 Definizione delle display list 85
- 7.4.2 Esempio: generazione di testi con le display list 86
- 7.4.3 Font nella libreria GLUT 87
- 7.5 Programmazione degli Input Event-Driven 87
- 7.6 Menu 90
- 7.7 Picking 91
- 7.8 Progettazione di programmi interattivi 91
- 8. Trasformazioni Geometriche 93
- 8.1 Oggetti geometrici fondamentali e operazioni 93
- 8.2 Sistemi di coordinate e Frame 96
- 8.2.1 Variazione del sistema di coordinate 96
- 8.2.2 Esempio di cambiamento di rappresentazione 97
- 8.2.3 Coordinate omogenee 98
- 8.3 Trasformazioni affini 99
- 8.3.1 Traslazioni 100
- 8.3.2 Rotazioni 100
- 8.3.3 Scalature 102
- 8.4 Trasformazioni in coordinate omogenee 102
- 8.4.1 Traslazioni 102
- 8.4.2 Scalature 103
- 8.4.3 Rotazioni 104
- 8.4.4 Deformazioni 105
- 8.5 Composizione delle trasformazioni 105
- 8.5.1 Rotazioni attorno ad un punto fisso arbitrario 105
- 8.5.2 Rotazioni generali 106
- 8.5.3 Rotazioni attorno ad un asse arbitrario 106
- 8.6 Implementazione delle trasformazioni 107
- 8.6.1 Rotazione di un cubo 109
- 9. Modelli di illuminazione e Ombreggiatura 110
- 9.1 Modelli di illuminazione 110
- 9.2 Il modello di illuminazione di Phong 111
- 9.2.1 Riflessione ambiente 112
- 9.2.2 Riflessione diffusa 112
- 9.2.3 Riflessione speculare 113
- 9.3 Calcolo dei vettori 114
- 9.3.1 Vettori normali 114
- 9.3.2 Angolo di riflessione 116
- 9.4 Tecniche di shading 116
- 9.4.1 Flat shading 116
- 9.4.2 Gouraud shading 117
- 9.4.3 Phong shading 118
- 9.5 Sfera con suddivisioni ricorsive 118
- 9.6 Sorgenti luminose in OpenGL 120
- 9.7 Definizione dei materiali in OpenGL 122
- 9.8 Ombreggiatura della sfera 122
- 9.9 Rendering globale 124
- 9.9.1 Ray Tracing 124
- 9.9.2 Radiosity 127
- 10. Rappresentazione di Curve 129
- 10.1 Mesh di poligoni 129
- 10.1.1 Rappresentazione dei Mesh di Poligoni 129
- 10.1.2 Equazioni del piano 129
- 10.2 Curve cubiche parametriche 130
- 10.2.1 Caratteristiche di base 131
- 10.3 Curve di Hermite 132
- 10.4 Curve di Bézier 134
- 10.5 B-spline 136
- 10.5.1 B-spline uniformi 136
- 10.5.2 B-spline non uniformi 138
- 11. Metodi di Modellazione 140
- 11.1 Modelli 140
- 11.2 Modelli gerarchici 140
- 11.3 Animazione 145
- 11.4 Grafo della scena 145
- 11.5 Modelli language-based 146
- 11.6 Modelli basati sulla fisica e sistemi a particelle 148
- 11.7 Modelli derivati da insiemi di dati 151
- 12. Rappresentazione di Superfici 155
- 12.1 Superfici parametriche bicubiche 155
- 12.2 Superfici di Hermite 155
- 12.3 Superfici di Bézier 157
- 12.4 Superfici B-splines 157
- 12.5 Normali alle superfici 157
- 12.6 Superfici quadriche 158
- 12.7 Curve e superfici in OpenGL 158
- 13. Tecniche Discrete 161
- 13.1 Buffers e Mappings 161
- 13.2 Texture Mapping 162
- 13.2.1 Texture Mapping in OpenGL 164
- 13.2.2 Generazione del texture 165
- 13.3 Environmental mapping 165
- 13.4 Bump mapping 165
- 14. Indice Analitico 167