Powód jest taki, ponieważ mnożenie macierzy musi być wykonane w określonej kolejności, aby uzyskać prawidłowy wynik (jak być może już wiesz).
Sekwencja tłumaczeń/obrotów/skal odbywa się w kolejności odwrotnej podczas ich wpisywania.
Więc jeśli coś takiego:
Camera.rotate(15, 0, 0);
Camera.scale(.5f, .5f, .5f);
Camera.translate(70, 70, 70);
Ty pierwszy tłumaczenia 70,70,70 następnie skalowanie o 50% we wszystkich kierunkach, a następnie obraca się o 15 stopni wokół osi X.
Więc Matrix ma przed i po tłumaczeniu (dobrze, przed i po wszystkim), ponieważ może chcesz go najpierw obrócić o 15 stopni, a następnie przetłumaczyć, a następnie przeskalować.
Dzięki temu odpowiedzi na pre i post tłumaczą się. Teraz powód, dla którego kamera ma prosty obrót i tłumaczenie jest dla ludzi, którzy wiedzą jak to działa (jak ja!), Więc nigdy nie używam Matrixa lub Camera w tej sprawie, ponieważ mogę po prostu wykonywać swoje rotacje i tłumaczenia bezpośrednio na płótnie. Możesz też tak długo, jak wiesz, że tłumaczenia, skale i obracanie są wykonywane w odwrotnej kolejności.
Ponadto, jeśli wiesz, co ci powiedziałem, daje ci to więcej mocy. Możesz wykonać sekwencję 10 macierzy bez otaczania ich w wielu obiektach Matrix dla każdego z nich (na przykład, chcesz wykonać ruch wahadłowy, który odchyla się na zewnątrz ORAZ obraca się wokół środka, aby symulować siłę odśrodkową). Musiałoby to zostać wykonane z wieloma obrotami i tłumaczeniami (otoczonymi przez wiele obiektów Matrix przekazywanych sobie nawzajem), ale jeśli wiesz, jak działają tłumaczenia, możesz po prostu zrobić serię .translate(), .rotate(), i .scale().
Ta informacja jest szczególnie przydatna, jeśli kiedykolwiek tworzysz grafikę 3D, ponieważ wtedy te matryce wywołują u ludzi bóle głowy.
Mam nadzieję, że to pomoże!
Czy prowadzisz mnie do dokumentacji, że znalazłeś ten fakt? – hasanghaforian
Czy możesz podać link, który wspiera twoją odpowiedź? –
O mój. Minęło dużo czasu, odkąd to napisałem, a co najmniej brzmi arogancko. Dokumentację można znaleźć na wikipedii, a konkretnie: http://pl.wikipedia.org/wiki/Transformacja_matrix#Composing_and_inverting_transformations "Zauważ, że mnożenie odbywa się w przeciwnej kolejności od zdania angielskiego: matryca" A przez B "jest BA, nie AB." –