Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
J.Matulewski,T.Dziubak,M.Sylwestrzak,R.Płoszajczak,Grafika.Fizyka.Metodynumeryczne.
Symulacjefizycznezwizualizacj
ą
3D,Warszawa2010
ISBN978-83-01-16178-1,©byWNPWN2010
2.MacierzewOpenGL
55
JeżelidometodyCOknoGL::RysujSceneprzednarysowaniemtrójkątawstawimy
kodzlistingu2.3realizującymnożenieprzezpowyższąmacierz,totrójkątzostanie
zrzutowanynapłaszczyznęrównoległądoOXZzpunktemperspektywywyznaczo-
nymprzezwektorܮሺ0.5,2,0ሻ.Ponieważpierwotnietrójkątrysowanyjest
wpłaszczyźniez1,punktperspektywyznajdujesięzanim.Wkonsekwencjirzut
trójkątaznajdziesięprzedjegopierwotnympołożeniem(rysunek2.3).
Listing2.3.MacierzrzutowanianapłaszczyznęOXZ
floatn[4]={0,1,0,1.25};
floatL[4]={0.5,2,0,1};
floata=0;for(inti=0;i<4;++i)a+=L[i]*n[i];
floatM[16];
for(intkolumna=0;kolumna<4;++kolumna)
glMultMatrixf(M);
for(intwiersz=0;wiersz<4;++wiersz)
M[4*kolumna+wiersz]=-n[kolumna]*L[wiersz]+(kolumna==wiersz?a:0);
Rysunek2.3.TrójkątijegorzutnapłaszczyznęrównoległądoOXZ
Wiemyjuż,żemacierzmożezapisywaćzłożeniedowolnejliczbytransformacji.
Wszczególnościinteresującejestzłożenieprowadzącedoobrotuwokółosiniebędą-
cejwśrodkuukładuwspółrzędnych.Sprawdźmydlaprzykładu,jakbędziewyglądała
macierz,którarealizujeobrótwokółosirównoległejdoOZ,aleprzesuniętejwkie-
runku+xoݐ.Abyotrzymać,musimyprzesunąćlokalnyukładwspółrzędnychoݐ
wkierunkudodatnichwartościx,czylidopołożeniaosiobrotu.Następnieobrócićów
układokątߛwokółosiOZiwreszcieprzesunąćgozpowrotemoെݐ,tj.wkie-
runkuujemnychwartościx.Realizujetonastępującamacierz: