如何用齐次矩阵基于原点/世界空间进行翻译

时间:2014-11-05 06:01:39

标签: matrix linear-algebra matrix-multiplication

我不知道这是否是正确的问题,因为我想要问的可能是基本原则(及其实现),而不是特定于代码。我提前道歉。

目前,我正在尝试使用SDL& amp; C ++与我有限的知识和生锈的线性代数。我目前停留在转型部分。我编写了自己的矢量和矩阵类(Vector2,Vector3,Matrix2x2,Matrix3x3)。并将Matrix3x3导出为Transform类,以保存场景中对象的变换。因此,为了获得位置,它来自这些x =元素[0] [2],y =元素[1] [2],而角度来自atan(元素[1] [0],元素[0] [ 0])。

现在假设我对该对象进行了这种转换:

| 0.86602540378         -0.5           50 | 
|      0.5        0.86602540378       -70 | 
|       0                 0             1 |

或位置= 50,-70;旋转= 30度。

现在,如果我有一个翻译矩阵:

|   1        0        40 | 
|   0        1        20 | 
|   0        0         1 |

如何根据旋转的相对空间而不是基于世界/全球空间来翻译对象?所以对象的最终变换将是这样的:

| 0.86602540378         -0.5           90 | 
|      0.5        0.86602540378       -50 | 
|       0                 0             1 |

提前致谢。

1 个答案:

答案 0 :(得分:0)

在这种情况下,尝试应用左乘法。您可能已经意识到,矩阵乘法通常不是可交换的。 AB与BA不同。如果您乘以左侧的平移矩阵和右侧的对象变换,您很可能会得到它。