在左手坐标系中,设P(x, y, z)是旋转之前的点,Q(x`, y`, z)为绕z轴顺时针旋转o度后的点,M为旋转矩阵。则有:
(x`, y`, z`) = (x, y, z) * M
如下图,从z轴正向看旋转:
角POX = a, 角QOX = b,则有b = a + o
已知P的极坐标方程为:
x = r * cos(a)
y = r * sin(a)
Q的极坐标方程为:
x` = r * cos(b)
y` = r * sin(b)
因为cos(b) = cos(a + o) = cos(a)*cos(o) - sin(a)*sin(o),
sin(b) = sin(a + o) = sin(a)*cos(o) + cos(a)*sin(o)。
所以,
x` = r * cos(a)*cos(o) - r * sin(a)*sin(o) = x * cos(o) - y * sin(o)
y` = r * sin(a)*cos(o) + r * cos(a)*sin(o) = x * sin(o) + y * cos(o)
此时可以得出
| cos(o) sin(o) 0 |
M = | -sin(o) cos(o) 0 |
| 0 0 1 |
使得
Q(x`, y`, z`) = P(x, y, z) * M。
同理,可以推出其他轴的旋转矩阵。
求旋转矩阵的逆矩阵M`,使得P = Q * M`
将Q点向相反的方向旋转o度,即可得出逆矩阵。
o` = -o
将o`带入M中,可以得到M的逆矩阵
| cos(-o) sin(-o) 0 |
M` = |- sin(-o) cos(-o) 0 |
| 0 0 1 |
已知,
cos(-o) = cos(o)
sin(-o) = -sin(o)
所以,最终的逆矩阵为,
| cos(o) -sin(o) 0 |
M` = | sin(o) cos(o) 0 |
| 0 0 1 |