Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Macierz złożonego przekształcenia
Forum PHP.pl > Inne > Hydepark
sweter
Cześć,
Pytanie nie jest związane konkretnie z PHP, dlatego pozwoliłem sobie zamieścić je w tym dziale.

Potrzebuje obliczyć macierz kilku przekształceń obiektu w grafice 2D.
Wiem, że gdy mamy proste przekształcenie (czyli złożone z jednego przemieszczenia i obrotu wg. pewnego punktu - dla uproszczenia powiedzmy, że jest to środek obiektu) to wykonujemy je według reguły:
Kod
transform(-x, -y) * rotate(a) * transform (x + x', y + y')
gdzie x i y to para współrzędnych środka obiektu przed przekształceniem, x' i y' to wartości przesunięcia obiektu, a to kąt obrotu.

Problem mam, gdy jest ciąg sekwencji do wykonania, np. obróć o 30 stopni, przesuń o 30 po osi OX, obróć o -60 stopni, przesuń o 10 po osi OX i -15 po osi OY.
Jak się za to zabrać? Na kartce papieru, gdy mam narysowane położenie początkowe i końcowe "łatwo" mogę przenieść ten ciąg przekształceń do krótszej formy podobnej do tej z przykładowego kodu powyżej. Niestety z zaprogramowaniem mam już kłopot.

Z góry dziękuję za pomoc!
tzm
http://sylvester.jcoglan.com/api/matrix.html

ah te macierze, zobacz jak tu jest zrobione. kiedyś z tego korzystałem przy regresji i w sumie jest dość elastyczne.
destroyerr
Na wikipedii masz krótki artykuł do przeczytania. W wielkim skrócie, każde przekształcenie to macierz (kwadratowa), skoro Ciebie interesują dwa wymiary to ta macierz ma wymiar 3. Macierz ta składa się z macierzy rotacji (kwadratowa, wymiar 2), wektora przesunięcia (pionowego, wymiar 2) i (strzelam bo nie pamiętam) wektora rzutu/perspektywy. Przekształceń dokonujesz mnożąc te macierze ze sobą (we właściwej kolejności), mały przykład. Wydaje mi się, że tyle Ci wystarczy, ale jakby nie to pytaj dalej.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.