使用变换矩阵围绕任意点旋转

时间:2013-12-23 13:52:19

标签: algorithm graphics matrix computer-vision linear-algebra

我想使用变换矩阵围绕任意点旋转点。

所以方程是:

p'x = cos(theta) * (px-ox) - sin(theta) * (py-oy) + ox
p'y = sin(theta) * (px-ox) + cos(theta) * (py-oy) + oy

但是我想用矩阵变换的形式重写它,它似乎应该是(c = cos(theta),s = sin(theta)):

默认情况下,旋转矩阵使用原点作为旋转的中心。要绕任意点旋转,您必须使用平移矩阵减去到原点的距离,进行旋转,然后平移回来。

如果我理解它,我们首先从原点减去ot(0,0),然后围绕点(0,0)旋转然后加到结果点,但我认为第1和第3矩阵必须交换?

1 个答案:

答案 0 :(得分:4)

你不应该交换你的第1和第3矩阵,因为你正确地乘以作为列向量的点,所以序列不是从左到右,而是从右到左。

您可以通过扩展右手矩阵轻松验证结果,这将是表示p'x和p'y的公式。