旋转矩阵推导

在左手坐标系中,设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 |


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值