介绍
先介绍二维旋转变换,然后得到三维绕坐标轴旋转,再推广得到绕三维任意轴旋转的罗德里格斯旋转公式。
1.二维旋转变换
如果要求P逆时针旋转θ得到的P′,记Q为P逆时针旋转90°后的向量,即(−Py,Px),则P与Q正好组成了该平面内的一组正交向量,任何向量都可由其线性表出,由基本几何和三角学可得到:
P′=Pcosθ+Qsinθ
则
Px′Py′=Pxcosθ−Pysinθ=Pysinθ−Pxcosθ
写成矩阵为
P′=[cosθsinθ−sinθcosθ]P
2.三维旋转变换

注意Ry(θ)与其他不同是因为如果按照逆时针旋转,由x×z=−y,则得到y轴负方向,因此需改为顺时针,即−θ,这无论是在左手坐标系还是右手系都是相同的。
3.向量P绕任意轴A旋转θ角度证明:
不妨设A为单位向量,同时P可分解为与A平行和垂直的两个分量,分别为:
PprojAPperpA=(A⋅P)A=AATP=P−(A⋅P)A=P−AATP
如图所示

故最终结果
P′=PperpA′+PProjA
其中PPerpA′为PperpA旋转θ后得到的向量,如图

为求得其值,需找到一组线性组合来表示它,可选PperpA与其旋转90°后的向量这两个向量作为组合,可以得知A×P即为该向量,同时它的长度是与PperpA相等的,这是因为
∣A×P∣=∣P∣sinα=∣P−(A⋅P)A∣
所以
PperpA′=[P−(A⋅P)A]cosθ+(A×P)sinθ
所以
P′=[P−(A⋅P)A]cosθ+(A×P)sinθ+(A⋅P)A=Pcosθ+A×Psinθ+(A⋅P)A(1−cosθ)
记I为单位阵,则矩阵形式为
P′={Icosθ+⎣⎡0Az−Ay−Az0AxAy−Ax0⎦⎤sinθ+AAT(1−cosθ)}P
其中记
R=Icosθ+⎣⎡0Az−Ay−Az0AxAy−Ax0⎦⎤sinθ+AAT(1−cosθ)
为罗德里格斯旋转公式,而将其展开写成一个矩阵就可得到旋转矩阵。