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