Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Macierz złożonego przekształcenia, Grafika 2D
sweter
post
Post #1





Grupa: Zarejestrowani
Postów: 623
Pomógł: 11
Dołączył: 1.01.2009
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


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!


--------------------
Go to the top of the page
+Quote Post
tzm
post
Post #2





Grupa: Zarejestrowani
Postów: 675
Pomógł: 58
Dołączył: 17.12.2013

Ostrzeżenie: (10%)
X----


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.
Go to the top of the page
+Quote Post
destroyerr
post
Post #3





Grupa: Zarejestrowani
Postów: 879
Pomógł: 189
Dołączył: 14.06.2006
Skąd: Bytom

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 02:42