在给定描述变换矩阵的情况下将不同的变换应用于多边形

时间:2014-02-24 14:34:39

标签: matrix rotation 2d translation transformation

我有一个2D多边形和一个2D变换矩阵 M ,我用它来变换多边形的顶点。矩阵可以描述......

  • 围绕 z 轴旋转,
  • 缩放 x y
  • 沿着 x y 轴,
  • 沿 x y 轴进行翻译。

由于我们处于2D状态,因此转换矩阵的类型为 3x3 。这里以矢量 t 为基础的转换矩阵和按角度 a 的转换:

M_t = |1 0 t2|       M_r = | cos(a) sin(a)  0|
      |0 1 t1|             |-sin(a) cos(a)  0|
      |0 0 1 |             |   0      0     1|

在我的自定义框架中,我无法访问矩阵值,但可以连续应用其他矩阵:

vertice = ( M_r * M_t ) * vertice

上面的公式将顶点围绕(0,0)旋转角度 a ,然后按矢量 t <进行平移/ strong>即可。我知道矩阵乘法不是可交换的。所以乘法的顺序很重要。

我的问题现在我想获得一个转换矩阵 N ,它反映了一个轮换 R M 即可。换句话说:我想旋转和平移多边形相对于 M 给出的位置和旋转。

我可以想象这样做的方式,将未知的旋转和翻译作为 M 的一部分:

N = R * M * T

我的问题是:

  • 这在数学上是否正确?
  • 作为 M 的一部分,未知的剪切和缩放怎么样?
  • 有更好的方法吗?

0 个答案:

没有答案