Ostatnio pracuję nad grą z wykorzystaniem OpenGL i C ++ za pośrednictwem GLFW.
W grze mam sterowiec z zamontowaną wieżą. Sterowiec porusza się po światowych współrzędnych kosmicznych, a wieża „podąża” za nim.
Wieża ma własną przestrzeń współrzędnych dla swojego wyglądu / kierunku celowania. Zasadniczo, gdy wieża celuje w kierunku (0,0,1)
, jest skierowana równolegle do kierunku ruchu sterowców.
Aby nadać wieżyczce cel przestrzeni kosmicznej, mam macierz, która przyjmuje współrzędne przestrzeni świata i przekształca je we współrzędne przestrzeni kosmicznej.
Gdy strzelasz z wieży, chcę, aby odradzała pociski w przestrzeni świata, więc czy istnieje elegancki sposób wykorzystania mojej macierzy transformacji do konwersji współrzędnych przestrzeni wieży z powrotem na przestrzeń świata?
Ogólniejszym sposobem zadawania pytań może być: jeśli mam macierz, M
która przenosi współrzędne z przestrzeni A
do przestrzeni B
. Czy istnieje prosty sposób M
na uzyskanie współrzędnych od B
do A
?
źródło
Jeśli macierz transformacji jest macierzą obrotu, można uprościć problem, wykorzystując fakt, że odwrotność macierzy obrotu jest transpozycją tej macierzy.
Jeśli macierz transformacji reprezentuje obrót, po którym następuje translacja, należy traktować komponenty osobno. Odwrotność jest równoważna odjęciu translacji, a następnie zastosowaniu transpozycji macierzy obrotu.
źródło
W twojej bibliotece macierzy prawdopodobnie znajduje się funkcja o nazwie odwrotna. Prawdopodobnie tego właśnie szukasz.
źródło