Przy transformacjach obrazów wektorowych 2d, takich jak przesunięcie, skalowanie, czy obrót, pomocne są macierze.
Przykładowo, w tablicach:
double[] punktyX = {3, ... , ... };
double[] punktyY = {5, ... , ... };
przechowuje punkty, które po połączeniu dają nam jakiś tam domek.
Teraz chciałbym ten domek przesunąć o (2,3). Tworze wiec macierze:
[ 1 0 2 ]
[ 0 1 3 ]
[ 0 0 1 ]
[ 3 ]
[ 5 ]
[ 1 ]
i mnoze je przez siebie. Dzieki temu otrzymam nowy punkt po transformacji , w postaci macierzy
[ x' ]
[ y' ]
[ 1 ]
Moje pytanie brzmi ... jak teraz najlatwiej narysowac odcinek, skladajacy sie z dwoch punktow, ktore mamy w postaci takiej macierzy jak wyzej ? Musimy "wyciagnac" wspolrzedne z tej macierzy, czy moze poprawniej byloby zaimplementowanie jakiejs metody, ktora przyjmujac jako argumenty dwie takie macierze, rysuje odcinek?
Pytam, bo w sumie nie wiem dlaczego operacje przesuniecia wykonuje sie na macierzach ... przecież łatwiej byłoby w przypadku przesuniecia np o (3,5) wykonac operacje dodawania:
x' = x + 3
y' = y + 5
i od razu można by użyć wbudowaną funkcję drawLine ...
Proszę mi wyjaśnić dlaczego te macierze są takie ważne i w jaki sposób mając punkty w postaci takiej macierzy, narysować np odcinek .