Mam kilka modeli, które chcę obracać za pomocą czwartorzędów w normalny sposób, z wyjątkiem tego, że zamiast obrotu wokół początku chcę, aby został nieco przesunięty. Wiem, że nie mówisz w przestrzeni 3D, że obracasz się wokół punktu; mówisz, że obracasz się wokół osi. Wizualizuję to jako obracanie się wokół wektora, którego ogon nie jest ustawiony w miejscu pochodzenia.
Wszystkie transformacje afiniczne w moim silniku renderowania / fizyce są przechowywane za pomocą SQT (skala, kwaternion, tłumaczenie; pomysł zapożyczony z książki Game Engine Architecture ). Więc buduję macierz z każdej części z tych komponentów i przekazuję ją do modułu cieniującego wierzchołki. W tym systemie stosowane jest tłumaczenie, następnie skalowanie, a następnie obrót.
W jednym konkretnym przypadku muszę przetłumaczyć obiekt w przestrzeni świata, przeskalować go i obrócić wokół wierzchołka, który nie jest wyśrodkowany na lokalnym pochodzeniu obiektu.
Pytanie: Biorąc pod uwagę ograniczenia mojego obecnego systemu opisane powyżej, jak mogę osiągnąć lokalny obrót wyśrodkowany wokół punktu innego niż początek? Automatyczna opinia dla każdego, kto potrafi opisać, jak to zrobić, używając tylko matryc :)