Wektory i macierze w OpenGL

Podobne dokumenty
SIMR 2016/2017, Analiza 2, wykład 1, Przestrzeń wektorowa

dr Mariusz Grządziel 15,29 kwietnia 2014 Przestrzeń R k R k = R R... R k razy Elementy R k wektory;

1 Zbiory i działania na zbiorach.

2 1 3 c c1. e 1, e 2,..., e n A= e 1 e 2...e n [ ] M. Przybycień Matematyczne Metody Fizyki I

Zadania z algebry liniowej - sem. I Przestrzenie liniowe, bazy, rząd macierzy

macierze jednostkowe (identyczności) macierze diagonalne, które na przekątnej mają same

Algebra liniowa. 1. Macierze.

Przekształcenia geometryczne. Mirosław Głowacki Wydział Inżynierii Metali i Informatyki Przemysłowej

Macierze. Rozdział Działania na macierzach

ALGEBRA LINIOWA Z ELEMENTAMI GEOMETRII ANALITYCZNEJ

1 Rozwiązywanie układów równań. Wyznaczniki. 2 Wektory kilka faktów użytkowych

Analiza matematyczna i algebra liniowa Macierze

a 11 a a 1n a 21 a a 2n... a m1 a m2... a mn a 1j a 2j R i = , C j =

Przekształcenia liniowe

Wykład 5. Ker(f) = {v V ; f(v) = 0}

Przekształcenia liniowe

W naukach technicznych większość rozpatrywanych wielkości możemy zapisać w jednej z trzech postaci: skalara, wektora oraz tensora.

1 Macierze i wyznaczniki

Wykład 14. Elementy algebry macierzy

Co to jest wektor? Jest to obiekt posiadający: moduł (długość), kierunek wraz ze zwrotem.

Analiza funkcjonalna 1.

Układy równań liniowych

2 Przygotował: mgr inż. Maciej Lasota

Algebra liniowa z geometrią

cx cx 1,cx 2,cx 3,...,cx n. Przykład 4, 5

a 11 a a 1n a 21 a a 2n... a m1 a m2... a mn x 1 x 2... x m ...

1 Przestrzeń liniowa. α 1 x α k x k = 0

Pokazać, że wyżej zdefiniowana struktura algebraiczna jest przestrzenią wektorową nad ciałem

Iloczyn skalarny, wektorowy, mieszany. Ortogonalność wektorów. Metoda ortogonalizacji Grama-Schmidta. Małgorzata Kowaluk semestr X

ALGEBRA LINIOWA. Wykład 2. Analityka gospodarcza, sem. 1. Wydział Zarządzania i Ekonomii Politechnika Gdańska

Geometria Lista 0 Zadanie 1

15. Macierze. Definicja Macierzy. Definicja Delty Kroneckera. Definicja Macierzy Kwadratowej. Definicja Macierzy Jednostkowej

A,B M! v V ; A + v = B, (1.3) AB = v. (1.4)

DB Algebra liniowa semestr zimowy 2018

Jak łatwo zauważyć, zbiór form symetrycznych (podobnie antysymetrycznych) stanowi podprzestrzeń przestrzeni L(V, V, K). Oznaczamy ją Sym(V ).

3. Macierze i Układy Równań Liniowych

φ(x 1,..., x n ) = a i x 2 i +

Rozdział 5. Macierze. a 11 a a 1m a 21 a a 2m... a n1 a n2... a nm

1. Elementy (abstrakcyjnej) teorii grup

Matematyka z el. statystyki, # 1 /Geodezja i kartografia I/

Macierz o wymiarach m n. a 21. a 22. A =

MATEMATYKA I SEMESTR ALK (PwZ) 1. Sumy i sumy podwójne : Σ i ΣΣ

14. Przestrzenie liniowe

B jest liniowo niezależny V = lin (B) 1. Układ pusty jest bazą przestrzeni trywialnej {θ}. a i v i = i I. b i v i, (a i b i ) v i = θ.

Przestrzenie wektorowe

Wykład 4 Udowodnimy teraz, że jeśli U, W są podprzetrzeniami skończenie wymiarowej przestrzeni V to zachodzi wzór: dim(u + W ) = dim U + dim W dim(u

GRK 2. dr Wojciech Palubicki

Podstawy robotyki. Wykład II. Robert Muszyński Janusz Jakubiak Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska

Baza w jądrze i baza obrazu ( )

PODSTAWY RACHUNKU WEKTOROWEGO

Lista. Przestrzenie liniowe. Zadanie 1 Sprawdź, czy (V, +, ) jest przestrzenią liniową nadr :

, to liczby γ +δi oraz γ δi opisują pierwiastki z a+bi.

OPISY PRZESTRZENNE I PRZEKSZTAŁCENIA

Elementy grafiki komputerowej. Elementy geometrii afinicznej

= i Ponieważ pierwiastkami stopnia 3 z 1 są (jak łatwo wyliczyć) liczby 1, 1+i 3

MATEMATYKA I SEMESTR ALK (PwZ) 1. Sumy i sumy podwójne : Σ i ΣΣ

1 Elementy logiki i teorii mnogości

i = [ 0] j = [ 1] k = [ 0]

4 Przekształcenia liniowe

Trójwymiarowa grafika komputerowa rzutowanie

Układy równań i nierówności liniowych

1. PODSTAWY TEORETYCZNE

Treści programowe. Matematyka. Efekty kształcenia. Literatura. Terminy wykładów i ćwiczeń. Warunki zaliczenia. tnij.org/ktrabka

Macierze i Wyznaczniki

Formy kwadratowe. Mirosław Sobolewski. Wydział Matematyki, Informatyki i Mechaniki UW. wykład z algebry liniowej Warszawa, styczeń 2009

Układy liniowo niezależne

Treść wykładu. Układy równań i ich macierze. Rząd macierzy. Twierdzenie Kroneckera-Capellego.

GRAFIKA KOMPUTEROWA podstawy matematyczne. dr inż. Hojny Marcin pokój 406, pawilon B5 Tel.

Zadania egzaminacyjne

Z ostatniego wzoru i zależności (3.20) można obliczyć n6. Otrzymujemy (3.23) 3.5. Transformacje geometryczne

Akwizycja i przetwarzanie sygnałów cyfrowych

2 Rachunek macierzowy, metoda eliminacji Gaussa-Jordana Wprowadzenie teoretyczne Zadania... 9

ALGEBRA Z GEOMETRIĄ MACIERZE ODWZOROWAŃ LINIOWYCH

1. PODSTAWY TEORETYCZNE

Przestrzenie liniowe

Przestrzeń unitarna. Jacek Kłopotowski. 23 października Katedra Matematyki i Ekonomii Matematycznej SGH

3. Wykład Układy równań liniowych.

Przestrzenie liniowe

Macierze - obliczanie wyznacznika macierzy z użyciem permutacji

1.1 Definicja. 1.2 Przykład. 1.3 Definicja. Niech G oznacza dowolny, niepusty zbiór.

3 1 + i 1 i i 1 2i 2. Wyznaczyć macierze spełniające własność komutacji: [A, X] = B

Iloczyn skalarny. Mirosław Sobolewski. Wydział Matematyki, Informatyki i Mechaniki UW. 10. wykład z algebry liniowej Warszawa, grudzień 2013

Algebra liniowa z geometria. - zadania Rok akademicki 2010/2011

Funkcje analityczne. Wykład 4. Odwzorowania wiernokątne. Paweł Mleczko. Funkcje analityczne (rok akademicki 2016/2017) dla każdego s = (s.

WYBRANE DZIAŁY ANALIZY MATEMATYCZNEJ. Wykład II

13 Układy równań liniowych

Lista. Algebra z Geometrią Analityczną. Zadanie 1 Przypomnij definicję grupy, które z podanych struktur są grupami:

Praca domowa - seria 6

Zadania z Algebry liniowej 3 semestr zimowy 2008/2009

Wykład 4. Informatyka Stosowana. Magdalena Alama-Bućko. 25 marca Magdalena Alama-Bućko Wykład 4 25 marca / 25

Działania na przekształceniach liniowych i macierzach

Matematyka stosowana i metody numeryczne

Przekształcenia geometryczne w grafice komputerowej. Marek Badura

3. FUNKCJA LINIOWA. gdzie ; ół,.

1. Liczby zespolone. Jacek Jędrzejewski 2011/2012

Funkcje analityczne. Wykład 4. Odwzorowania wiernokątne. Paweł Mleczko. Funkcje analityczne (rok akademicki 2017/2018)

Zadania z algebry liniowej Iloczyn skalarny, przestrzenie euklidesowe

Transformaty. Kodowanie transformujace

[ A i ' ]=[ D ][ A i ] (2.3)

Wyk lad 7 Baza i wymiar przestrzeni liniowej

Transkrypt:

1 Wektory i macierze w OpenGL Filip Zawrocki Uniwersytet Mikołaja Kopernika Wydział Fizyki, Astronomii i Informatyki Stosowanej

Krótkie przypomnienie wiadomości z algery liniowej Przestrzenie wektorowe Przestrzeń wektorowa (inaczej - liniowa) to matematyczny twór złożony ze zbioru obiektów zwanych wektorami. Wektory te można dodawać do siebie i skalować (mnożyć) przez liczby z pewnego ciała liczbowego (np. R). Operacjom tym są stawiane pewne warunki, np. przemienność dodawania. Przestrzeń linowa ma zdefiniowane pewne ciało liczbowe, mówi się, że przestrzeń jest nad tym ciałem.

Krótkie przypomnienie wiadomości z algery liniowej Kombinacja liniowa Jeżeli v 1, v 2,..., v n V gdzie V to pewna przestrzeń wektorowa i współczynniki α 1, α 2,..., α n F to liczby z ciała F nad którym jest przestrzeń, to: n v = α i v i i=1 nazywamy kombinacją liniową wektorów v 1, v 2,..., v n. Kombinacja liniowa wektorów jest także wektorem. O 2 wektorach mówimy, że są niezależne liniowo, jeżeli ich kombinacja liniowa może być równa 0 tylko jeżeli wszystkie współczynniki kombinacji są równe 0.

Krótkie przypomnienie wiadomości z algery liniowej Baza przestrzeni Bazą przestrzeni V nazywamy dowolny zbiór wektorów w tej przestrzeni, taki, że: dowolny wektor w V można przedstawić jednoznacznie jako kombinację liniową wektorów w bazie dowolne 2 wektory w bazie są niezależne liniowo Każda przestrzeń liniowa posiada bazę (jedną lub więcej) i wszystkie bazy danej przestrzeni są równoliczne. Kardynalność bazy określa się jako wymiar przestrzeni. Oznaczamy dim(v ) Np. przestrzeń trójwymiarowa ma trójelementową bazę. Przestrzeń jest określona (wygenerowana) przez bazę. Przestrzenie mogą mieć skończony bądź nieskończony wymiar. W dalszym ciągu będą rozważane skończeniewymiarowe.

Krótkie przypomnienie wiadomości z algery liniowej Współrzędne wektora Jeżeli przedstawi się wektor w bazie (jako kombinację wektorów bazowych), otrzyma się zestaw współczynników z ciała liczbowego w liczbie równej wymiarowi przestrzeni. Jeżeli ustalimy określony porządek wektorów w bazie, to współczynniki będą miały określony porządek. Takie uporzadkowane współczynniki nazywa się współrzędnymi wektora. Zbiór współczynników wraz z określeniem bazy jednoznacznie identyfikuje wektor. Wektor za pomocą współczynników zapisuje się w taki sposób: v = [v 1, v 2,..., v n ], gdzie v 1... v n to kolejne współrzędne w przestrzeni n-wymiarowej. Należy pamiętać, że współrzędne wektora mają znaczenie tylko wraz z określeniem bazy. W 2 różnych bazach ten sam wektor ma różne współrzędne.

Krótkie przypomnienie wiadomości z algery liniowej Przekształcenia liniowe Przekształcenie działa na jednej przestrzeni V produkując nową przestrzeń U. Jest to więc funkcja f : V U. Przekształcenie liniowe dodatkowo (ze względu na to, że jest linowe ) spełnia warunek: f (αv + βu) = αf (v) + βf (u) v V, u U Tak więc przekształcenie zamienia jedną przestrzeń na drugą. Jeżeli przekształcenie zamienia prestrzeń na inną o tym samym wymiarze, to rozmiar bazy zachowuje się, tylko zmieniają się wektory bazowe. A więc współrzędne wektorów zmieniają się. Wektory przestrzeni zostają w miejscu tylko są widziane z innego punktu widzenia. Albo, baza zostaje w miejscu, a każdy wektor przestrzeni zostaje zmieniony.

Krótkie przypomnienie wiadomości z algery liniowej Macierze przekształceń Podobnie jak wektor można przestawić jako jednowymiarową tablicę liczb (współrzędnych), przekształcenie liniowe można przedstawić jako dwuwymiarową tablicę liczb. Niech f : V U. Bazy w przestrzeniach V i U: {x i } n i=1 - baza w V, {y i} m i=1 - baza w U. Wówczas: f (v) = f ( n α i x i ) = i=1 f (x i ) U n α i f (x i ) i=1 m f (x i ) = a ji y i j=1

Krótkie przypomnienie wiadomości z algery liniowej Macierze przekształceń a ji, i = 1... n, j = 1... m - tablica dwuwymiarowa liczb: a 11 a 12... a 1n a 21 a 22... a 2n...... a m1 a m2... a mn Taką tablicę określa się mianem macierzy.

Krótkie przypomnienie wiadomości z algery liniowej Iloczyn macierzy z wektorem Przekształcenie działa na każdy wektor z jednej przestrzeni dając wektor w innej przestrzeni. Mając daną macierz i współrzędne wektora, jakie będą współrzędne wektora w nowej przestrzeni? Mając macierz o elementach a ji wynik v działania przekształcenia odpowiadającemu tej macierzy na wektor v obliczamy następująco: v j = n a jk v k k=1 Można to zapisać tak: a 11 a 12... a 1n v 1 v 1 a 21 a 22... a 2n v 2......... = v 2... a m1 a m2... a mn v n v m

Krótkie przypomnienie wiadomości z algery liniowej Złożenie przekształceń i iloczyn 2 macierzy Jeżeli f : V U i g : U W to h : V W, h(v) = g(f (v)) nazywamy złożeniem g i f. Oznaczamy h = g f. Czyli przekształcamy przestrzeń, dostając inną przestrzeń, po tę nową przestrzeń znowu przekształcamy dostając trzecią. Odwrócenie złożenia nie jest zawsze możliwe, a nawet gdy jest to nie zawsze jest przemienne. Działaniem analogicznym dla macierzy jest iloczyn macierzy. Niech V, U, W mają wymiary odpowiednio n, m, l. Wówczas mając macierz przekształcenia f o współczynnikach a, i macierz przekształcenia g o współczynnikach b, macierz h o współczynnikach c jest zdefiniowana naztępująco: c ji = m b jk a ki, i = 1... n, j = 1... l k=1

Krótkie przypomnienie wiadomości z algery liniowej Złożenie przekształceń i iloczyn 2 macierzy Można zapisać: b 11 b 12... b 1m a 11 a 12... a 1n c 11 c 12... c 1n b 21 b 22... b 2m a 21 a 22... a 2n........... = c 21 c 22... c 2n....... b l1 b l2... b lm a m1 a m2... a mn c l1 c l2... c ln Warto zauważyć, że iloczyn macierzy przez wektor można uznać za szczególny przypadek iloczyny 2 macierzy, jeżeli potraktuje się wektor jako macierz kolumnową (macierz o jednym wierszu i jednej lub więcej kolumnach)

Krótkie przypomnienie wiadomości z algery liniowej Prekształcenie odwrotne Przekształcenie f : V V, dim(v ) = dim(v ) jest nazywane odwracalnym, jeżeli istnieje takie przekształcemie g : V V, że f g = g f = i, gdzie i jest przekształceniem identycznościowym o własności i(v) = v v. Oznaczamy: g = f 1 Aby przekształcenie było odwrcalne potrzeba i wystarczy, żeby było różnowartościowe i żeby każdemu wektorowi obrazu odpowiadał wektor w pierwotnej przestrzeni. Odwracalna macierz przekształcenia to macierz reprezętująca odwracalne przekształcenie. Macierz odwracalna musi być kwadratowa (przestrzenie z i do mają ten sam wymiar). Dla odwracalnej macierzy A mamy macierz odwrotną A 1 taką, że AA 1 = I. Macierze A 1 i I również są kwadratowe.

Krótkie przypomnienie wiadomości z algery liniowej Prekształcenie odwrotne Macierz I ma postać: 1 0... 0 0 1... 0...... 0 0... 1

Krótkie przypomnienie wiadomości z algery liniowej Transpozycja macierzy Dla macierzy A o współczynnikach a ji macierz A T o współczynnikach a ij nazywa się transponowaną do A.

Krótkie przypomnienie wiadomości z algery liniowej Iloczyn skalarny Dla przestrzeni liniowej można zdefiniować operację działającą na parze wektorów zwaną iloczynem skalarnym. Iloczyn skalarny przypisuje parze wektorów liczbę z ciała nad którym jest przestrzeń. Oznacza się: (v, u) lub v u. Iloczyn skalarny musi spełniać 3 warunki: (v, u) = (u, v), (α 1 v 1 + α 2 v 2, u) = α 1 (v 1, u) + α 2 (v 2, u), (v, v) 0. Standardowy iloczyn skalarny dla przestrzeni R n zdefiniowany jest jako: n i=1 v i u i, gdzie v i, u i to odpowiednio i-ta współrzędna wektora v i i-ta wspołrzędna wektora u i u, v R n. Iloczyn ten można zapisać jako iloczyn macierzy: (v, u) = v T u O 2 wektorach u, v mówi się, że są ortogonalne, gdy (u, v) = 0.

Przestrzeń Euklidesa R n Przykładem przestrzeni wektorowej jest n-wymiarowa przestrzeń Euklidesa (z układem współrzędnych Kartezjusza). W przestrzeni tej mamy standardową bazę złożoną z 3 wektorów oznaczonych e x, e y, e z. Przyjęty jest standardowy iloczyn skalarny. W przestrzeni tej dla każdego wekrora v definiuje się normę przypisującą wektorowi liczbę: v = (v, v) Wektory bazowe są parami ortogonalne i mają wszystkie normę. Baza jest uporządkowana, dzięki czemu wektorom przypisane jest n współrzędnych. Wektory bazowe tworzą tzw. układ współrzędnych. Wektor zerowy nazywamy środkiem tego układu. Szczególnym przypadkiem jest przestrzen Euklidesa trójwymiarowa. Ta przestrzeń jest wykorzystywana do opisu obiektów (powierzchni, prostych, punktów) w grafice trójwymiarowej, m.in OpenGL. Wynika to z faktu, że takiej przestrzeni żyjemy i obserwujemy przedmioty.

17 Przestrzeń Euklidesa R n W przestrzeni R n definiuje się kąt między wektorami v, u jako liczbę: θ = arc cos (v,u) v u

Iloczyn wektorowy w R 3 W przestrzeni R 3 można zdefiniować operację na dwóch wektorach v i u dającą w wyniku wektor w: w 1 = v 2 u 3 v 3 u 2, w 2 = v 3 u 1 v 1 u 3, w 3 = v 1 u 2 v 2 u 1 Oznaczamy w = v u. w ma następujące własności: (w, v) = (w, u) = 0, w = u v sin θ, gdzie θ to kąt między v i u. Iloczyn wektorowy można zapisać jako iloczyn wektora i macierzy antysymetrycznej. Niech: 0 a 3 a 2 [a] = a 3 0 a 1 a 2 a 1 0 Wówczas: a b = [a] b = [b] T a

Przykłady przekształceń w R 3 Skalowanie Skalowanie to transformacja, która wypycha lub wciska przestrzeń w kierunku środka. W przestrzeni trójwymiarowej skalowanie może się odbywać wzdłuż 3 kierunków bazowych, mówimy więc o 3 współczynnikach skalowania. Jeżeli wszystkie współczynniki są równe to mówimy o skalowaniu jednolitym, w przeciwnym przypadku o niejednolitym. Skalowanie dla współczynników α, β, γ jest zdefinowane tak: Odpowiada temu macierz: S(v) = S([v 1, v 2, v 3 ]) = [αv 1, βv 2, γv 3 ] α 0 0 0 β 0 0 0 γ Skalowanie jednolite jest równoważne iloczynowi wektora przez liczbę. Skalowanie ze współczynnikami odpowiada odbiciu w obiektu w kierunku odpowiadającym współczynnikowi.

Przykłady przekształceń w R 3 Rotacja Rotacja obraca przestrzeń zachowując odległosci między punktami i kąty. Odpowiada ona spojrzeniu na tę samą przestrzeń z innego kierunku. Obrót dokonuje się wokół pewnej osi k o pewien kąt θ. Rotacja r jest zdefiniowana następująco: Macierz rotacji R można zapisać tak: r(v) = v cos θ + (k v) sin θ + k(k v)(1 cos θ) R = I cos θ + [k] sin θ + (1 cos θ)kk T

Przykłady przekształceń w R 3 Rotacja Oznaczmy c = cos θ, s = sin θ. Szczególne przypadki: 1 0 0 0 c s macierz rotacji wokół pierwszego wektora bazowego 0 s c c 0 s 0 1 0 macierz rotacji wokół drugiego wektora bazowego s 0 c c s 0 s c 0 macierz rotacji wokół trzeciego wektora bazowego 0 0 1

22 Przykłady przekształceń w R 3 Pochylenie Pochylenie to przekształcenie, któremu odpowiada macierz postaci: 1 α yx α zx αxy 1 αzy αxz αyz 1 Np. macierz: 1 α 0 0 1 0 0 0 1 Zachowuje współrzędne drugą i trzecią wektora, natomiast v 1 = v 1 + αv 2. Takie przekształcenie pochyla przestrzeń wzdłuż pierwszego wektora bazowego.

23 Problem ze skalowaniem Jeżeli mamy 2 wektory prostopadłe i przeskalujemy je niejednolicie, to w ogólności nie muszą być dalej prostopadłe. Czasami jednak wymagamy, aby wektor był prostopadły do innego. Tak jest w przypadku wektora normalnego do powierzchni.

Problem ze skalowaniem Rozwiązania: Nie używać skalowania niejednolitego. Wykonać transformację na obu wektorach, następnie jeden naprawić kolejnym przekształceniem. W drugim przypadku trzeba znaleźć takie przekształcenie, które przywraca prostopadłość wektorów. Okazuje się, że gdy macierz M reprezentuje przekształcenie (będące złożeniem między innymi skalowań niejednolitych), które działając na 2 wektorach niszczy prostopadłość, to macierz M = (M T ) 1 = (M 1 ) T zastosowana na jednym z wektorów przywraca wzajemną prostopadłość. Jednocześnie zachowuje ona długość.

Przestrzeń homogeniczna Macierze n na n przestrzeni R n są ograniczone. Mogą reprezentować tylko przekształcenia liniowe. Translacja, czyli przesunięcie środka układu współrzędnych przestrzeni o wektor nie jest przekształceniem liniowym. Nie ma więc macierzy, która odpowiada translacji. Przekształcenie które jest złożeniem przekształcenia liniowego i translacji nazywamy przekształceniem afinicznym. Przekształcenia afinicznego nie można zapisac za pomocą macierzy n na n, można je zapisać za to za pomocą macierzy n + 1 na n + 1. Przyjmujemy więc przestrzeń o wymiarze o 1 większym. Np. zamiast 3 mamy 4 wymiary. Jednak nie używamy większej przestrzeni w pełni. Tworzymy w niej klasy abstrakcji odpowiadające obiektom z mniejszej przestrzeni. Nadal mamy więc wektory np. trójwymiarowe, chociaż reprezentujemy je za pomocą 4 współrzędnych.

Współrzędne homogeniczne Dodajemy więc do wektorów dodatkową współrzędną. Np. [x, y, z] [x, y, z, w]. Stwierdzamy, że dwa zestawy współrzędnych: [x 1, x 2,..., x n+1 ] i [y 1, y 1,..., y n+1 ] przedstawiają ten sam wektor gdy x i /x n+1 = y i /y n+1, i = 1... n. Pojawiają nam się nowe twory - takie odpowiadające współrzędnym [x 1, x 2,..., 0]. Te obiekty nazywamy punktami w nieskończoności. Mają one jakiś kierunek i zwrot, ale są nieskończenie odległe od środka układu współrzędnych. Odpowiadają im półproste. W grafice 3d takimi obiektami są wektory normalne. Zwykłe wektory, odpowiadające punktom przestrzeni mają ostatnią współrzędną niezerową. Możemy utożsamić [x, y, z] [x, y, z, 1]. Jeżeli w OpenGL przy podawaniu współrzędnych pominiemy ostatnią, zostanie przyjęta właśnie w = 1.

Podobnie jak zwykłym punktom odpowiadają wektory z jedynką na koncu, we współrzędnych homogenicznych macierzom przekształceń liniowych odpowiadają pewne szczególne macierze (n+1)-wymiarowe. a 11 a 12... a 1n a 11 a 12... a 1n 0 a 21 a 22... a 2n..... a 21 a 22... a 2n 0........ a n1 a n2... a nn a n1 a n2... a nn 1

Macierz translacji Macierz translacji nie jest przekształceniem liniowym, więc nie ma odpowiadajacej macierzy w zwyklych współrzędnych. Ma jednak we współrzędnych homogenicznych: 1 0 0 t x 0 1 0 t T (v) = v + t = y 0 0 1 t z 0 0 0 1 v x v y v z v w A więc we współrzednych homogenicznych można zapisać translację i przekształcenie liniowe, nawet oba, więc ogólnie mówiąc odowlne przekształcenie afiniczne. Ponadto dzięki tym współrzędnym mozna zapisać macierz rzutu perspektywicznego.

Macierze w starym i nowym OpenGL OpenGL 1.0-1.5 OpenGL 2.0-2.1 Opengl 3.0-4.2 Funckjonalność wbudowana, ustalona (fixed) Brak funckjonalności wbudowanej - możliwość i konieczność budowania własnej glloadmatrix, glmultmatrix, glrotate, gltranslate, glscale, glmatrixmode... gluniformmatrix*, glgetuniformlocation

Macierze w starym OpenGL Przestrzenie Współrzędne wysyłane do karty graficznej (np. przez glvertex) przechodzą szereg transformacji, zanim stworzą współrzędne punktu w oknie programu. Każda transformacja produkuje nową przestrzeń. Współrzędne wierzchołków tworzą przestrzeń obiektu (object space). Przestrzeń obiektu jest transformowana przez macierz modelu/widoku do przestrzeni oka (eye space). Przestrzeń oka jest transformowana przez macierz projekcji tworząc przestrzeń obcinania (clip space).

Macierze w starym OpenGL Przestrzenie Współrzędne w przestrzeni obcinania są dzielone przez wspołrzędną w, tworząc zwykłą trójwymiarową przestrzeń znormalizowaną urządzenia. Dodatkowo na tym etapie używane są płaszczyzny obcinania. (normalized device space). Znormalizowane przestrzeń urządzenia jest transformowana do przestrzeni okna (window space) przez transformację widoku roboczego (viewport transform). Transformację modelu/widoku można rozdzielić na transformację widoku i modelu, jest to złożenie transformacji widoku i modelu (w tej kolejnści). W starym OpenGL jest to złączone, w nowym nie ma przekszód, aby je rozdzielić. Macierz modelu ma za zadanie poustawiać obiekty na scenie, zmienić ich kształt. Macierz widoku podowuje spojrzenie na obiekty z innego punktu widzenia (inna kamera).

Macierze w starym OpenGL glortho 32

Macierze w starym OpenGL glfrustum 33

Macierze w starym OpenGL gluperspective 34

Macierze w starym OpenGL Rodzaje macierzy Macierz Modelu/Widoku (modelview) Macierz Projekcji (projection) Macierz Tekstur (texture) Macierz Koloru (color)

Macierze w starym OpenGL Stosy macierzy 36

Macierze w nowym OpenGL Macierze w GLSL uniform mat3 mat1; uniform mat4 mat2; mat4x2 mat3[5];

Macierze w nowym OpenGL Modyfikacja macierzy w shaderze z zewnątrz gluniformmatrix*fv(glint location, GLsizei count, GLboolean transpose, const GLfloat * value) GLint glgetuniformlocation(gluint program, const GLchar * name)