Eu tenho trabalhado recentemente em um jogo usando OpenGL e C ++ através do GLFW.
No jogo, tenho uma aeronave com uma torre montada nela. A aeronave se move em coordenadas espaciais mundiais e a torre a segue.
A torre possui seu próprio espaço de coordenadas para a direção da aparência / objetivo. Basicamente, quando a torre aponta na direção (0,0,1)
, ela é paralela à direção do movimento das aeronaves.
Para dar à torre um alvo espacial mundial, eu tenho uma matriz que pega as coordenadas espaciais mundiais e as transforma em coordenadas espaciais da torre.
À medida que a torre dispara, quero que ela projete projéteis no espaço mundial, existe uma maneira elegante de usar minha matriz de transformação para converter as coordenadas do espaço da torre de volta ao espaço mundial?
Uma maneira mais geral de fazer a pergunta pode ser: se eu tiver uma matriz M
que leve coordenadas de um espaço A
para o outro B
. Existe uma maneira fácil de usar M
para obter as coordenadas de B
para A
?
fonte
Se sua matriz de transformação for uma matriz de rotação, você poderá simplificar o problema aproveitando o fato de que o inverso de uma matriz de rotação é a transposição dessa matriz.
Se sua matriz de transformação representa uma rotação seguida por uma tradução, trate os componentes separadamente. O inverso é equivalente a subtrair a translação e depois aplicar a transposição da matriz de rotação.
fonte
Na sua matriz lib provavelmente existe uma função chamada inversa. Provavelmente é isso que você está procurando.
fonte