如何反转转换矩阵的效果?


14

我最近一直在通过GLFW使用OpenGL和C ++进行游戏。

在游戏中,我有一个飞艇,上面装有炮塔。飞艇在世界空间坐标中移动,而炮塔“跟随”它。

炮塔在外观/目标方向上拥有自己的坐标空间。基本上,当炮塔指向方向时(0,0,1),其瞄准方向平行于飞艇的运动方向。

为了给炮塔提供世界空间目标,我有一个矩阵,用于获取世界空间坐标并将其转换为炮塔空间坐标。

随着炮塔开火,我希望它在世界空间中生成弹丸,那么有没有一种使用我的转换矩阵将炮塔空间坐标转换回世界空间的优雅方法?

提出问题的更一般的方法可能是:如果我有一个矩阵M,它的坐标从空间A到空间B。有没有办法使用一种简单的方法M来从获得的坐标BA

Answers:


19

只要矩阵M可逆的(这通常是,除非你正在做一些非常不寻常的),然后计算矩阵求逆M会给你一个矩阵,你想要做什么。

也就是说,如果M执行某些转换,则inverse(M)执行“相反”转换。

大多数矩阵/向量库提供了一种计算逆函数的方法。


1
额外的问题(就像您似乎会知道答案的人一样):不可逆变换矩阵会产生视觉上有趣的结果吗?
user1306322 2014年

6
@ user1306322也许。投影到一个较小的维度(例如,所有X值都为零)将是不可逆的转换,因为您将丢弃这些值。从它的意义上说,这很有趣,但并不是得到时髦的结果。“可逆性”和“视觉上有趣的”是正交的。
congusbongus 2014年

@congusbongus不!从3D投影到2D是在平面接收器上投影的标准方法。
imallett 2014年

@ user1306322你可能有兴趣在摩尔-彭罗斯伪逆
托比亚斯Kienzler

5

如果变换矩阵是旋转矩阵,则可以利用旋转矩阵的逆是该矩阵的转置这一事实来简化问题。

如果您的变换矩阵表示旋转后跟平移,则分别对待这些分量。逆运算等效于减去平移,然后应用旋转矩阵的转置。


2

在您的矩阵库中,可能有一个称为逆函数。那可能就是您想要的。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.