Grafika i transformacje

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!