如何在“前进方向”中移动变换?

时间:2012-07-05 05:52:45

标签: c++ math geometry physics

我想向前移动我的变换,我将直接用于我的对象。而不是仅仅在特定轴(例如z)中向前移动,是否有一种方法可以将其移向变形所面向的方向?例如,默认情况下我会完全沿着Z轴向下移动,但是,如果我在Y轴上旋转我的变换并想要“向前”,它将不会直接沿着Z向下,而是在我旋转的方向上稍微移动它

我相信我需要计算前向矢量,然而,这就是我能找到的所有内容。如果这是正确的,或者怎么做,我找不到任何东西。如何在具有4x4矩阵(行主要)的情况下在“向前方向”移动变换。

这不是我的游戏相机,而是我的游戏对象。在那里,我只有我的变换矩阵,它是根据我的旋转矩阵,比例矩阵和位置构建的。

1 个答案:

答案 0 :(得分:1)

你可以从矩阵中提取第三列(或行,取决于乘法的顺序),这将是向前(或向后,取决于“向下”的方向)。这将为您提供z轴的目标矢量。

等效地,您可以将向量new Vector4(0,0,1,0)(或new Vector4(0,0,-1,0))与矩阵(或带矩阵的向量)相乘。请注意,第四个坐标为零而不是一个,因为您不需要任何转换。这将为您提供z轴转换的方向。

这也适用于3x3旋转矩阵。在这种情况下,只需从上面的向量中删除最后一个坐标。

结果将是指向“前进”的向量。您可以将其添加到位置或平移矩阵/向量中。

相关问题