Как я могу обратить эффект матрицы преобразования?


14

Недавно я работал над игрой с использованием OpenGL и C ++ через GLFW.

В игре у меня есть дирижабль с установленной на нем башней. Дирижабль движется в мировых космических координатах, и турель «следует» за ним.

Башня имеет свое собственное координатное пространство для направления взгляда / цели. В основном, когда турель направлена ​​в направлении (0,0,1), она направлена ​​параллельно направлению движения дирижабля.

Чтобы дать башне мировую космическую цель, у меня есть матрица, которая берет мировые космические координаты и преобразует их в космические координаты башни.

Поскольку турель стреляет, я хочу, чтобы она порождала снаряды в мировом пространстве, так есть ли элегантный способ использования моей матрицы преобразования для преобразования координат башни в мировое пространство?

Более общий способ задать вопрос может быть: если у меня есть матрица, Mкоторая принимает координаты из космоса Aв космос B. Есть ли простой способ Mполучить координаты от Bдо A?

Ответы:


19

До тех пор , как матрица Mявляется обратимой (который обычно будет, если вы делаете что - то очень необычное), то вычисление обратной матрицы из Mдаст вам матрицу , которая делает то , что вы хотите.

То есть, если Mвыполняет какое-то преобразование, inverse(M)выполняет «противоположное» преобразование.

Большинство библиотек матриц / векторов предоставляют средства для вычисления обратного.


1
Дополнительный вопрос (как вам кажется, человек, который знает ответ): могут ли какие-нибудь необратимые матрицы преобразования дать визуально интересные результаты?
user1306322

6
@ user1306322 Возможно. Проецирование в более низкое измерение (например, обнуление всех значений X) будет необратимым преобразованием, поскольку вы отбрасываете значения. Это интересно в том смысле, что это полезно, но не так, что вы получите интересные результаты. «Обратимость» и «визуально интересный» являются ортогональными.
congusbongus

@congusbongus Нету! Проецирование из 3D в 2D является стандартным способом получения теней на плоских приемниках.
Ималлетт

@ user1306322 Вас может заинтересовать псевдообращение Мура – ​​Пенроуза
Тобиас Кинцлер,

5

Если ваша матрица преобразования является матрицей вращения, то вы можете упростить задачу, воспользовавшись тем, что обратная матрица вращения является транспонированием этой матрицы.

Если ваша матрица преобразования представляет вращение с последующим переводом, то обрабатывайте компоненты отдельно. Обратное эквивалентно вычитанию перевода и затем применению транспонирования матрицы вращения.


2

В вашей матричной библиотеке, вероятно, есть функция с именем inverse. Это, вероятно, то, что вы ищете.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.