komputerowa.pdf

(3420 KB) Pobierz
GrafikakomputerowaI
PrzemyslawKiciak
przemek@mimuw.edu.pl
5października2011
2
Streszczenie. Treściąwykładusąpodstawyteoretycznegrafikikomputerowej
orazwykorzystywanewniej algorytmyistrukturydanych.Kolejnymitemata
mi są algorytmy rasteryzacji odcinków, krzywych i wielokątów, obcinanie od
cinków i wielokątów, elementy geometrii afinicznej, rzutowanie, elementy mo
delowaniageometrycznego(wtymkrzyweipowierzchnieB´ezieraiBsklejane),
algorytmywidoczności,podstawowemodeleoświetleniaicieniowaniaimetoda
śledzenia promieni. Wykład uzupełniają kursy języka PostScript i programo
wania w OpenGL.
Wersja internetowa, zob. http://mst.mimuw.edu.pl ,
może zawierać dodatkowe materiały.
Niniejsze materiały są dostępne na licencji Creative Commons 3.0 Polska :
Uznanie autorstwa — Użycie niekomercyjne — Bez utworów zależnych .
Copyright · P.Kiciak, Uniwersytet Warszawski, Wydział Matematyki, Informatyki i Mechaniki, 2011. Niniejszy
plik został utworzony 5 października 2011.
SkładwsystemieL A T E X,zwykorzystaniemm.in.pakietów beamer oraz listings .Szablonypodręcznikaiprezentacji:
Piotr Krzyżanowski, projekt: Robert Dąbrowski.
817098031.006.png 817098031.007.png 817098031.008.png 817098031.009.png 817098031.001.png 817098031.002.png 817098031.003.png
Spis treści
1.1 Przegląd zastosowań grafiki komputerowej . . . . . . . . . . . . . . . . . . . . . . 9
1.2 Komputerowa wizualizacja przestrzeni . . . . . . . . . . . . . . . . . . . . . . . . 11
1.2.1 Wprowadzenie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.2.2 Perspektywa geometryczna . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.2.3 Widoczność . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.2.4 Perspektywa powietrzna . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.2.5 Głębia ostrości . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.2.6 Oświetlenie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.2.7 Cienie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.2.8 Stereoskopia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.2.9 Ruch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.2.10 Współdziałanie innych zmysłów . . . . . . . . . . . . . . . . . . . . . . . . 16
1.3 Grafika interakcyjna . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.3.1 Działanie programu interakcyjnego . . . . . . . . . . . . . . . . . . . . . . 17
2.1 Rysowanie odcinka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.2 Rysowanie okręgu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.3 Rysowanie elips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.4 Wypełnianie wielokątów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.5 Wypełnianie obszaru przez zalewanie . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.6 Algorytm z pływającym horyzontem . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.1 Obcinanie odcinków i prostych . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.1.2 Algorytm SutherlandaCohena . . . . . . . . . . . . . . . . . . . . . . . . 35
3.1.3 Algorytm LiangaBarsky’ego . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.1.4 Obcinanie prostych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.2 Obcinanie wielokątów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3
4
SPIS TREŚCI
3.2.1 Algorytm SutherlandaHodgmana . . . . . . . . . . . . . . . . . . . . . . 37
3.2.2 Algorytm WeileraAthertona . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.1 Przestrzenie afiniczne i euklidesowe . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.1.1 Określenie przestrzeni afinicznej . . . . . . . . . . . . . . . . . . . . . . . 41
4.1.2 Iloczyn skalarny . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.2 Układy współrzędnych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.2.1 Współrzędne kartezjańskie . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.2.2 Współrzędne barycentryczne . . . . . . . . . . . . . . . . . . . . . . . . . 44
4.2.3 Współrzędne jednorodne . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.3 Przekształcenia afiniczne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.3.1 Definicja i własności . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.3.3 Przekształcanie wektora normalnego . . . . . . . . . . . . . . . . . . . . . 49
4.3.4 Zmiana układu współrzędnych . . . . . . . . . . . . . . . . . . . . . . . . 49
4.3.7 Rozkładanie przekształceń . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.3.8 Obroty, liczby zespolone i kwaterniony . . . . . . . . . . . . . . . . . . . . 57
5.1 Rzutowanie równoległe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
5.2 Rzutowanie perspektywiczne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
5.3 Algorytm rzutowania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
5.4 Stereoskopia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
5.5 Panorama i inne rzuty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
6.1 Krzywe B´eziera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
6.1.1 Określenie krzywych B´eziera . . . . . . . . . . . . . . . . . . . . . . . . . 71
6.1.2 Algorytm de Casteljau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
6.1.3 Własności krzywych B´eziera . . . . . . . . . . . . . . . . . . . . . . . . . . 73
6.2 Krzywe Bsklejane . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
6.2.1 Określenie krzywych Bsklejanych . . . . . . . . . . . . . . . . . . . . . . 75
6.2.2 Algorytm de Boora . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
6.2.3 Podstawowe własności krzywych Bsklejanych . . . . . . . . . . . . . . . . 77
6.2.4 Wstawianie węzła . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
6.2.5 Krzywe Bsklejane z węzłami równoodległymi . . . . . . . . . . . . . . . . 81
6.3 Powierzchnie B´eziera i Bsklejane . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
6.3.1 Płaty tensorowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
817098031.004.png
c P.Kiciak, Uniwersytet Warszawski, 2011.
5
6.3.2 Płaty trójkątne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
6.3.3 Metody siatek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
6.4 Krzywe i powierzchnie wymierne . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
6.5 Modelowanie powierzchni i brył . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
6.5.1 Zakreślanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
6.5.2 Powierzchnie rozpinane . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
6.5.3 Powierzchnie zadane w postaci niejawnej . . . . . . . . . . . . . . . . . . . 90
7.1 Prymitywy i obiekty złożone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
7.2 Reprezentowanie brył wielościennych . . . . . . . . . . . . . . . . . . . . . . . . . 94
7.3 Konstrukcyjna geometria brył . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
7.3.1 Wyznaczanie przecięcia wielościanów . . . . . . . . . . . . . . . . . . . . . 97
7.4 Drzewa i grafy scen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
8.1 Drzewa czwórkowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
8.1.1 Konstrukcyjna geometria figur płaskich . . . . . . . . . . . . . . . . . . . 102
8.1.2 Algorytm widoczności . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
8.1.3 Transmisja obrazów i MIPmapping . . . . . . . . . . . . . . . . . . . . . 104
8.2 Drzewa ósemkowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
8.3 Drzewa binarne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
8.4 Binarny podział przestrzeni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
9.1 Rodzaje algorytmów widoczności . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
9.2 Algorytmy przestrzeni danych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
9.2.1 Odrzucanie ścian „tylnych” . . . . . . . . . . . . . . . . . . . . . . . . . . 109
9.2.3 Algorytm Ricciego . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
9.2.4 Algorytm WeileraAthertona . . . . . . . . . . . . . . . . . . . . . . . . . 113
9.2.5 Algorytm Appela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
9.2.6 Algorytm Hornunga . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
9.3 Algorytmy przestrzeni obrazu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
9.3.1 Algorytm malarza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
9.3.2 Algorytm binarnego podziału przestrzeni . . . . . . . . . . . . . . . . . . 116
9.3.3 Algorytm BSP wyznaczania cieni . . . . . . . . . . . . . . . . . . . . . . . 116
9.3.4 Algorytm z buforem głębokości . . . . . . . . . . . . . . . . . . . . . . . . 117
9.3.5 Algorytm przeglądania liniami poziomymi . . . . . . . . . . . . . . . . . . 118
9.3.6 Algorytm cieni z buforem głębokości . . . . . . . . . . . . . . . . . . . . . 120
817098031.005.png
Zgłoś jeśli naruszono regulamin