二维向量的旋转

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二维向量的旋转相关的知识,希望对你有一定的参考价值。

参考技术A 在二维坐标系中,一个向量的旋转就是绕某个点的旋转,假设此点为原点,作下图:

即已知向量   和旋转角度  , 求旋转后向量 

设  的长度为  ,  和  与   轴的夹角分别为   和 

则  和  的极坐标形式分别为:

和 

据图, ,则:

把  带入上式,则

即得到从一个向量到另一个向量的线性变换。若旋转中心不为原点,先平移至原点,经过上述旋转变换后再反平移回原旋转中心。

此线性变换还可以表达为矩阵乘积的形式:

用一个二阶行矩阵表示向量   为: ,  为 

有:  

则二维向量旋转  度角的变换矩阵可以表示为:

若朝反方向(即顺时针)旋转,只需将  改为 ,根据正弦函数和余弦函数的奇偶性,

得到顺时针旋转的变换矩阵:

旋转变换的理解

上图将向量(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} \\]

以上是关于二维向量的旋转的主要内容,如果未能解决你的问题,请参考以下文章

二维向量的旋转公式

向量旋转公式:

变换矩阵

《计算机图形学基础》之变换矩阵

旋转矩阵公式

unity3d 欧拉角怎么转换为方向向量