Недавно я работал над игрой с использованием OpenGL и C ++ через GLFW.
В игре у меня есть дирижабль с установленной на нем башней. Дирижабль движется в мировых космических координатах, и турель «следует» за ним.
Башня имеет свое собственное координатное пространство для направления взгляда / цели. В основном, когда турель направлена в направлении (0,0,1)
, она направлена параллельно направлению движения дирижабля.
Чтобы дать башне мировую космическую цель, у меня есть матрица, которая берет мировые космические координаты и преобразует их в космические координаты башни.
Поскольку турель стреляет, я хочу, чтобы она порождала снаряды в мировом пространстве, так есть ли элегантный способ использования моей матрицы преобразования для преобразования координат башни в мировое пространство?
Более общий способ задать вопрос может быть: если у меня есть матрица, M
которая принимает координаты из космоса A
в космос B
. Есть ли простой способ M
получить координаты от B
до A
?
источник
Если ваша матрица преобразования является матрицей вращения, то вы можете упростить задачу, воспользовавшись тем, что обратная матрица вращения является транспонированием этой матрицы.
Если ваша матрица преобразования представляет вращение с последующим переводом, то обрабатывайте компоненты отдельно. Обратное эквивалентно вычитанию перевода и затем применению транспонирования матрицы вращения.
источник
В вашей матричной библиотеке, вероятно, есть функция с именем inverse. Это, вероятно, то, что вы ищете.
источник