上图将向量(x,y)旋转到\((x_1,y_1)\),求旋转矩阵。即已知角度\(\theta\),问题表述为矩阵方程:
\[ \begin{bmatrix} x_1 \\ y_1 \end{bmatrix} = A* \begin{bmatrix} x \\ y \end{bmatrix} \]
求变换矩阵\(A\)。
方法一
利用平面几何的方法。
\[ \begin{split} x_1 = {}&cos(\theta+\alpha)*r\\ = {}&cos(\theta)*cos(\alpha)*r - sin(\theta)*sin(\alpha)*r\\ = {}& cos(\theta)*x-sin(\theta)*y \end{split} \]
\[ \begin{split} y_1 = {}&sin(\theta+\alpha)*r\\ = {}&sin(\theta)*cos(\alpha)*r+cos(\theta)*sin(\alpha)*r\\ = {}&sin(\theta)*x + cos(\theta)*y \end{split} \]
这个线性方程组写成矩阵形式,可得
\[ A = \begin{bmatrix} cos(\theta) & -sin(\theta)\\ sin(\theta) & cos(\theta) \end{bmatrix} \]
方法二
利用线性变换的方法
\(R^2\)中的任意一点(x,y)经过旋转\(\theta\)后变为(x1,y1),求旋转矩阵。
这是一个线性变换,设变换为
\[ T(X) = AX \]
\(X\)为一个\(R^2\)的向量,按题意即是求变换矩阵\(A\)。
设\(I\)为\(R^2\)的单位矩阵,\(e\)为单位列向量。即:
\[ I = \begin{bmatrix} 1&0\\ 0&1 \end{bmatrix} =(e1,e2) \]
按照直角坐标系理解,e1就是x轴上的(1,0)点,e2就是y轴上的(0,1)点。
\[ X = x*e1 + y*e2 \]
由于是线性变换,所以
\[ T(X) = T(x*e1 + y*e2) = x*T(e1) + y*T(e2) =\begin{bmatrix} T(e1)&T(e2) \end{bmatrix}* \begin{bmatrix} x\\y \end{bmatrix} \]
所以
\[ A =\begin{bmatrix} T(e1)&T(e2) \end{bmatrix} \]
\(T(e)\)通过平面几何可以很容易求出来。三角形的斜边长度是1,角度是\(\theta\),那么对边是\(sin(\theta)\),即x坐标,邻边是\(cos(\theta)\),即y坐标。
\[ T(e1) = \begin{bmatrix} cos(\theta)\\ sin(\theta) \end{bmatrix} \]
同理求得:
\[ T(e2) = \begin{bmatrix} -sin(\theta)\\ cos(\theta) \end{bmatrix} \]
因为旋转到x轴的负方向,所以取负值。
所以
\[ A = \begin{bmatrix} cos(\theta)&-sin(\theta)\\ sin(\theta)&cos(\theta) \end{bmatrix} \]