W grafice dwuwymiarowej pozycja każdego wirtualnego obiektu jest ściśle definiowana przez punkty o dokładnych współrzędnych (x, y) na płaszczyźnie ekranu. Aby ożywić ten statyczny świat i przemieścić element, wykorzystujemy wektory, których wartości dodajemy matematycznie do pierwotnych współrzędnych punktu, realizując w ten sposób przesunięcie. Ponieważ jednak łączenie takich wektorowych przesunięć z bardziej skomplikowanymi obrotami jest obliczeniowo uciążliwe, w profesjonalnym programowaniu stosuje się macierze jednorodne, które pozwalają wykonać obie te transformacje jednocześnie za pomocą jednego, eleganckiego mnożenia.
Czym są transformacje macierzy jednorodnych?
W grafice komputerowej i robotyce, aby poruszyć ramieniem maszyny, wykonujemy dwie operacje: przesunięcie (translację) oraz obrót (rotację). Aby uniknąć skomplikowanych wzorów trygonometrycznych dla każdego punktu osobno, inżynierowie stosują genialny trik matematyczny – współrzędne jednorodne.
Do standardowego punktu 2D (x, y) dopisuje się wirtualną "1", tworząc wektor trzyelementowy [x, y, 1]. Dzięki temu zarówno przesunięcie, jak i obrót można zapisać w postaci jednej macierzy 3x3.
- Macierz Translacji przechowuje wartości przesunięcia w swojej prawej kolumnie.
- Macierz Rotacji przechowuje wartości sinusów i cosinusów kąta w lewym górnym rogu.
Dzięki temu możemy wyliczyć pozycję łyżki koparki (która jest na końcu trzech ramion), po prostu wymnażając przez siebie macierze kolejnych przegubów: M_końcowe = M_bazy × M_ramienia1 × M_ramienia2 × M_łyżki. Przetestuj to w symulatorze poniżej!
Użyj suwaków, aby sterować przegubami. Unikaj uderzania ramieniem w kosz!