问题:将三维坐标系中的点
u(1,0,0)
旋转到
v(x,y,z)
,求旋转矩阵
R
已知旋转轴为单位向量
https://en.wikipedia.org/wiki/Rotation_matrix#Rotation_matrix_from_axis_and_angle
R=⎡⎣⎢cosθ+u2x(1−cosθ)uyux(1−cosθ)+uzsinθuzux(1−cosθ)−uysinθuxuy(1−cosθ)−uzsinθcosθ+u2y(1−cosθ)uzuy(1−cosθ)+uxsinθuxuz(1−cosθ)+uysinθuyuz(1−cosθ)−uxsinθcosθ+u2z(1−cosθ)⎤⎦⎥
u
转到
u×v=∣∣∣∣i1xj0yk0z∣∣∣∣=−zj+yk
归一化后的旋转轴向量为
(0,−zy2+z2√,yy2+z2√)=(0,−z1−x2√,y1−x2√)
而旋转角
θ
有,
cosθ=u⋅v∥u∥∥v∥=xsinθ=∥u×v∥∥u∥∥v∥=y2+z2−−−−−−√=1−x2−−−−−√
带入以上公式,得到旋转矩阵为
R=⎡⎣⎢⎢⎢⎢⎢⎢xyz−y1−y21+x−yz1+xz−yz1+x1−z21+x⎤⎦⎥⎥⎥⎥⎥⎥
注:这里用 x2+y2+z2=1 对上式做了简化
旋转矩阵的性质
RT=R−1
即
RRT=I
和
RTR=I
,可以推导出旋转矩阵的行向量和列向量都是单位向量
并且行向量之间相互正交,列向量也相互正交
例如
1. 列向量为单位向量
(−y)2+(1−y21+x)2+(−yz1+x)2=y2+1−2y2(1+x)2+y4(1+x)2+y2z2(1+x)2=y2+1+y2(y2+z2−2)(1+x)2=y2+1+y2(1−x2−2)(1+x)2=1
2. 列向量正交
第一列和第二列的内积
−xy+y(1−y21+x)−yz21+x=y(1−x)−yy2+z21+x=y(1−x)−y1−x21+x=0
第二列与第三列的内积
yz+(1−y21+x)−yz1+x−yz1+x(1−z21+x)=yz−2yz1+x+yz(y2+z2)(1+x)2=yz−2yz1+x+yz(1−x2)(1+x)2=yz(x−1)1+x+yz(1−x)1+x=0