2013-12-23 75 views
2

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

所以方程为:

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)旋转,然后添加到结果点,但我认为第一个和第三个矩阵必须是换?

+5

这个问题似乎是脱离主题,因为它纯粹是关于[math.se]。 – Dukeling

+1

@Dukeling我认为这与计算机图形学有关。 – mrgloom

+0

_“我认为第一个和第三个矩阵必须交换”_。我想你可能是对的。找出最快的方法可能是通过实验:尝试不交换,然后尝试交换,并查看哪一个看起来是正确的。 – Kevin

回答

4

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

通过扩展右手矩阵可以很容易地验证结果,这就是精确表示p'x和p'y的方程。