向量旋转
以二维向量做例子好理解,假设向量p=(1,0),旋转角度90°,则theta=pi/2,旋转矩阵r为:
[[cos(theta), -sin(theta)],
[sin(theta), cos(theta)]]
右乘:
p * r = (0,-1)
物理含义:顺时针旋转了90度
左乘:
由于r有两列,p只是一行,无法直接进行左乘矩阵计算,可对p进行转置一下,乘法结果再转置回来:
(r * p.T).T = (0,1)
物理含义:逆时针旋转了90度
验证脚本:
from numpy import *
import math
p = mat([[1,0]])
r = mat([[math.cos(math.pi/2),-math.sin(math.pi/2)],[math.sin(math.pi/2),math.cos(math.pi/2)]])
print(p * r)
print((r * p.T).T)
网友评论