三维旋转矩阵推导
1.绕X轴旋转,
分别求出Y、Z基向量绕X轴旋转θ后描述,
X基向量不变为X'=(1,0,0),
Y基向量绕X轴旋转θ后为Y'=(0,cosθ,sinθ),
Z基向量绕X轴旋转θ后为Z'=(0,-sinθ,cosθ),
若为矩阵乘列向量形式,矩阵为,
1 0 0
0 cosθ -sinθ
0 sinθ cosθ ,
若为行向量乘矩阵形式,矩阵为,
1 0 0
0 cosθ sinθ
0 -sinθ cosθ ,
2.绕Y轴旋转
X基向量绕Y轴旋转θ后为X'=(cosθ,0,-sinθ),
Y基向量不变,为Y'=(0,1,0),
Z基向量绕Y轴旋转θ后为Z'=(sinθ,0,cosθ),
若为矩阵乘列向量形式,矩阵为,
cosθ 0 sinθ
0 1 0
-sinθ 0 cosθ,
若为行向量乘矩阵形式,矩阵为,
cosθ 0 -sinθ
0 1 0
sinθ 0 cosθ,
3.绕Z轴旋转
X基向量绕Z轴旋转θ后为X'=(cosθ,sinθ,0),
Y基向量绕Z轴旋转θ后为Y'=(-sinθ,cosθ,0),
Z基向量不变,为Z'=(0,0,1),
若表示为矩阵乘列向量形式,矩阵为,
cosθ -sinθ 0
sinθ cosθ 0
0 0 1,
若表示为行向量乘矩阵形式,矩阵为,
cosθ sinθ 0
-sinθ cosθ 0
0 0 1,
3.绕任意轴旋转,
为方便推导,设向量n(x0,y0,z0)为单位向量,向量v(x,y,z)
将向量v分解为平行于向量n的向量v∥和垂直于向量n的向量v⊥,
已知,
v=v∥+v⊥,
v'=v'∥+v'⊥=v∥+v'⊥,
而v∥=(v·n)*n,
v⊥=v-v∥=v-(v·n)*n,
令向量w=n×v⊥=n×[v-(v·n)*n]=n×v,其大小为|n|*|v⊥|*sin90°=|v⊥|,
那么v'⊥=sinθ*w+cosθv⊥
=sinθ*n×v+cosθ*(v-(v·n)*n)
那么v'=v'∥+v'⊥
=(v·n)*n+sinθ*n×v+cosθ*(v-(v·n)*n)
接下来就可以求各基向量绕向量n旋转θ后的表示,
X'=(X·n)*n+sinθ*n×X+cosθ*(X-(X·n)*n)
|x0^2 | | 0 | | cosθ-cosθ*x0^2 |
=|x0*y0| + |z0*sinθ | + | -cosθ*x0y0 |
|x0*z0| |-y0*sinθ | | -cosθ*x0z0 |
|x0^2*(1-cosθ)+cosθ |
= |x0y0*(1-cosθ)+z0*sinθ |
|x0z0*(1-cosθ)-y0*sinθ |,
同样,
Y'=(Y·n)*n+sinθ*n×Y+cosθ*(Y-(Y·n)*n)
|x0*y0| |-z0*sinθ | | -cosθ*x0y0 |
=|y0^2 | + | 0 | + | cosθ-cosθ*y0^2 |
|y0*z0| |x0*sinθ | | -cosθ*y0z0 |
|x0y0*(1-cosθ)-z0*sinθ |
= |y0^2*(1-cosθ)+cosθ |
|y0z0*(1-cosθ)+x0*sinθ |,
同样,
Z'=(Z·n)*n+sinθ*n×Z+cosθ*(Z-(Z·n)*n)
|x0*z0| |y0*sinθ | | -cosθ*x0z0 |
=|y0z0 | + |-x0*sinθ | + | -cosθ*y0z0 |
|z0^2 | | 0 | | cosθ -cosθ*z0^2 |
|x0z0*(1-cosθ)+y0*sinθ |
= |y0z0*(1-cosθ)-x0*sinθ |
|z0^2*(1-cosθ)+cosθ |,
然后构造矩阵,
若为矩阵乘列向量形式,矩阵为
|x0^2*(1-cosθ)+cosθ x0y0*(1-cosθ)-z0*sinθ x0z0*(1-cosθ)+y0*sinθ |
|x0y0*(1-cosθ)+z0*sinθ y0^2*(1-cosθ)+cosθ y0z0*(1-cosθ)-x0*sinθ |
|x0z0*(1-cosθ)-y0*sinθ y0z0*(1-cosθ)+x0*sinθ z0^2*(1-cosθ)+cosθ |,
若为行向量乘矩阵形式,矩阵为
|x0^2*(1-cosθ)+cosθ x0y0*(1-cosθ)+z0*sinθ x0z0*(1-cosθ)-y0*sinθ |
|x0y0*(1-cosθ)-z0*sinθ y0^2*(1-cosθ)+cosθ y0z0*(1-cosθ)+x0*sinθ |
|x0z0*(1-cosθ)+y0*sinθ y0z0*(1-cosθ)-x0*sinθ z0^2*(1-cosθ)+cosθ |,
得安装公式编辑器了=-=!