Stronę tą wyświetlono już: 12418 razy
Wstęp
Bardzo często w programowaniu stosuje się macierze transformacji, które umożliwiają wykonywanie operacji:
- translacji (przemieszczenia) - operacja zawsze odwracalna;
- obrotu - operacja zawsze odwracalna;
- skalowania - operacja nieodwracalna w niektórych przypadkach, np. gdy wartość skali dla dowolnej osi jest równa 0;
- pochylanie - operacja nieodwracalna w niektórych przypadkach;
- odbicie lustrzane - operacja zawsze odwracalna
Ogólny zapis macierzy transformacji dla 2W obiektów
Dla przykładu rozpatrzmy macierz transformacji stosowanej w programowaniu dla grafiki 2W:
gdzie:
- m1, 1 - w przypadku obrotu to kosinus kąta obrotu, w przypadku skalowania na osi x ta wartość jest mnożona przez współczynnik skali;
- m1, 2 - w przypadku obrotu to minus sinus kąta obrotu, w przypadku pochylenia wzdłuż osi x określa pochylenie;
- m2, 1 - w przypadku obrotu to sinus kąta obrotu, w przypadku pochylenia wzdłuż osi y określa pochylenie;
- m2, 2 - w przypadku obrotu to kosinus kąta obrotu, w przypadku skalowania na osi y ta wartość jest mnożona przez współczynnik skali;
- dx - przemieszczenie (przesunięcie) na osi x;
- dy - przemieszczenie (przesunięcie) na osi y
Obliczanie macierzy odwrotnej Mtr-1
Nie każdą macierz można odwrócić, wynika to z poniższego wzoru na macierz odwrotną macierzy Mtr:
[2] |
Zapis wyrażenia w formacie TeX-a:
W powyższym wzorze, łatwo zauważyć, że w mianowniku powtarza się to samo wyrażenie, którym jest wyznacznik macierzy transformacji Mtr:
[3] |
Zapis wyrażenia w formacie TeX-a:
Teraz wzór [2] upraszcza się do nieco ładniejszej postaci:
[4] |
Zapis wyrażenia w formacie TeX-a:
Macierz transformacji Mtr jest odwracalna wtedy i tylko wtedy, gdy wartość wyznacznika macierzy transformacji Mtr ≠ 0.
Operacja transformacji punktu
Jeżeli dana jest macierz transformacji Mtr, to iloczyn tej macierzy razy wektor umożliwia pozyskanie punktu poddanego procesowi transformacji:
[5] |
Zapis wyrażenia w formacie TeX-a:
Odwrotna operacja jest możliwa, gdy spełniony jest warunek, że współczynnik a z wzoru [3] ≠ 0. W takim przypadku prawdziwa jest zależność:
[6] |
Zapis wyrażenia w formacie TeX-a:
Składanie macierzy obrotu względem zadanego punktu
W celu uzyskania macierzy obrotu konieczne jest przemnożenie trzech następujących macierzy:
[7] |
Zapis wyrażenia w formacie TeX-a:
Powyższy wzór mnoży macierz przesunięcia razy macierz obrotu i razy macierz powrotnego przesunięcia. W ten sposób otrzymana macierz przemnożona przez wektor P obraca go o kąt α względem puntu o współrzędnych dx i dy.
Macierz skalowania
Macierz skalowania wygląda następująco:
[8] |
Zapis wyrażenia w formacie TeX-a:
Można również skalować względem obranego punktu składając poprzez wymnożenie następujące macierze:
[9] |
Zapis wyrażenia w formacie TeX-a:
Macierz pochylania
Na pochylanie pozwala macierz następującej postaci:
[10] |
Zapis wyrażenia w formacie TeX-a:
gdzie:
- sh - pochylenie poziome;
- sv - pochylenie w poziomie
Odbicie lustrzane
Macierz odbicia lustrzanego względem osi x wygląda dość banalnie:
[11] |
Zapis wyrażenia w formacie TeX-a:
Macierz odbicia lustrzanego względem osi y:
[12] |
Zapis wyrażenia w formacie TeX-a:
Odbicie lustrzane względem osi przechodzącej przez środek układu współrzędnych i pochylonej o α stopnie względem osi x:
[13] |
Zapis wyrażenia w formacie TeX-a:
Mieszanie wszystkich transformacji
Wszystkie obiekty mogą być przechowywane jako seria punktów oraz macierz transformacji Mtr, na którą mogą się składać w zasadzie nieskończone ilości wykonywanych wcześniej operacji. Co jest jednak ważne to to, że aby dana operacja była odwracalna, wyznacznik macierzy transformacji Mtr nie może być równy 0. Warto też nadmienić, że w takim układzie punkty obiektu opisywanego nie są modyfikowane i przechowywane są w pierwotnej nie zmienionej postaci. Dopiero gdy ów obiekt jest rysowany obliczany jest iloczyn tychże punktów i macierzy transformacji.