« poprzedni punkt  następny punkt »


3. Współrzędne jednorodne

W grafice komputerowej omówione wyżej przekształcenia geometryczne są opisywane z wykorzystaniem tak zwanych współrzędnych jednorodnych. Obiekt opisany w określonym układzie współrzędnych prostokątnych, na przykład x,y, może być przedstawiony również w układzie współrzędnych o jeden wymiar większym, na przykład w układzie x, y, z. Wtedy, na przykład w przypadku punktu o współrzędnych (x,y) dochodzi jedna współrzędna z, która w ogólnym przypadku może mieć dowolną wartość. Jeżeli przyjmie się, że ta nowa współrzędna będzie miała wartość 1 to mówimy, że punkt jest reprezentowany we współrzędnych jednorodnych. I tak, punkt o współrzędnych (x, y) ma teraz współrzędne (x,y,1). Dodajmy od razu, że gdyby zdarzyło się, że w wyniku obliczeń we współrzędnych jednorodnych otrzymalibyśmy współrzędne (x',y',w), to od razu trzeba wykonać krok normalizacyjny tak, żeby uzyskać postać standardową dla której w = 1. Ten krok normalizacyjny jest wykonywany zgodnie z następującymi zależnościami:

,

Przejście do współrzędnych jednorodnych umożliwia jednolity zapis podstawowych przekształceń geometrycznych: przesunięcia, obrotu, skalowania i innych za pomocą macierzy przekształceń 3x3. Pozwala to realizować takie operacje za pomocą specjalizowanego sprzętu i w efekcie przyspieszanie obliczeń.

Korzystając ze współrzędnych jednorodnych można, w przypadku złożonych przekształceń, mnożyć macierze składowych przekształceń przez inne macierze przekształceń i uzyskiwać pojedynczą macierz dla złożonego przekształcenia (również o wymiarze 3x3). Pozwala to niejednokrotnie w istotny sposób redukować ilość potrzebnych obliczeń.

W literaturze są stosowane dwie konwencje zapisu punktu w postaci wektorowej: kolumnowa i wierszowa. Obie konwencje są równoważne. W przypadku reprezentacji punktu w postaci wektora kolumnowego mnoży się macierz przekształcenia przez wektor kolumnowy tak jak w poniższym przykładowym zapisie:

Przy reprezentacji punktu w postaci wektora wierszowego mnoży się ten wektor przez transponowaną macierz przekształcenia tak jak w poniższym przykładzie:

Postać macierzy 3x3 w jednej konwencji jest postacią transponowaną macierzy w drugiej konwencji. W dalszym ciągu będzie używana konwencja z wektorem kolumnowym.

Podstawowe przekształcenia: przesunięcie, mnożenie, skalowanie, pochylanie i dowolne ich kombinacje są określane jako przekształcenia afiniczne i ich ogólny zapis jest następujący:

Niżej podano macierze dla poszczególnych przekształceń geometrycznych na płaszczyźnie.

Przesunięcie o wektor (tx, ty):

Skalowanie ze współczynnikami skalowania Sx, Sy :

Obrót o kąt q względem początku układu współrzędnych:

Pochylanie wzdłuż osi x ze współczynnikiem a i wzdłuż osi y ze współczynnikiem b:

Jak już wspomniano wyżej, jedną z zalet reprezentowania przekształceń w postaci macierzowej jest to, że można je mnożyć przez siebie w celu uzyskania macierzy dla przekształcenia złożonego. Jeżeli więc konieczne będzie wykonanie szeregu przekształceń w odniesieniu do określonego punktu P, to można wstępnie wykonać mnożenie macierzy Mi kolejnych przekształceń (w ustalonej kolejności) i uzyskać jedną macierz wypadkową M' dla tego ciągu przekształceń. Jest to szczególnie korzystne obliczeniowo wtedy, gdy ten sam ciąg przekształceń ma być wykonany w odniesieniu do wielu punktów. Wyjaśniają to poniższe równania:

P' = M3 M2 M1 P
M = M3 M2 M1
P' = M P.

Jeżeli na przykład chcielibyśmy obracać obiekt nie względem początku układu współrzędnych a względem pewnego punktu P(x1,x2), to powinniśmy wykonać kolejno następujące operacje: takie przesunięcie obiektu, żeby punkt P(x1,x2) znalazł się w początku układu współrzędnych, wykonanie obrotu o kąt q, takie przesunięcie obróconego obiektu żeby punkt znajdujący się w początku układu współrzędnych wrócił do początkowego położenia P(x1,x2). Oznacza to, że kolejno powinniśmy wykonać operacje przesunięcia o wektor (-x1,-x2), obrotu o kąt q i przesunięcia o wektor (x1,x2). Można to zrealizować wykonując kolejno trzy operacje mnożenia wektora przez odpowiednie macierze. Równoważny sposób polega na tym, że na początku znajdziemy macierz wypadkową dla całej operacji, a dopiero potem korzystamy z niej w odniesieniu do poszczególnych wierzchołków obracanego obiektu. Niżej pokazany jest proces wyznaczania wypadkowej macierzy. Zwróćmy uwagę na kolejność macierzy.

=

W podobny sposób można wyznaczać macierze wypadkowe dla innych złożonych przekształceń. Proponuję samodzielne znalezienie macierzy wypadkowej dla operacji skalowania względem punktu nie leżącego w początku układu współrzędnych.


« poprzedni punkt  następny punkt »