• 二维旋转变换推导


    上图将向量(x,y)旋转到((x_1,y_1)),求旋转矩阵。即已知角度( heta),问题表述为矩阵方程:

    [egin{bmatrix} x_1 \ y_1 end{bmatrix} = A* egin{bmatrix} x \ y end{bmatrix} ]

    求变换矩阵(A)

    方法一

    利用平面几何的方法。

    [egin{split} x_1 = {}&cos( heta+alpha)*r\ = {}&cos( heta)*cos(alpha)*r - sin( heta)*sin(alpha)*r\ = {}& cos( heta)*x-sin( heta)*y end{split} ]

    [egin{split} y_1 = {}&sin( heta+alpha)*r\ = {}&sin( heta)*cos(alpha)*r+cos( heta)*sin(alpha)*r\ = {}&sin( heta)*x + cos( heta)*y end{split} ]

    这个线性方程组写成矩阵形式,可得

    [A = egin{bmatrix} cos( heta) & -sin( heta)\ sin( heta) & cos( heta) end{bmatrix} ]

    方法二

    利用线性变换的方法

    (R^2)中的任意一点(x,y)经过旋转( heta)后变为(x1,y1),求旋转矩阵。

    这是一个线性变换,设变换为

    [T(X) = AX ]

    (X)为一个(R^2)的向量,按题意即是求变换矩阵(A)

    (I)(R^2)的单位矩阵,(e)为单位列向量。即:

    [ I = egin{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) =egin{bmatrix} T(e1)&T(e2) end{bmatrix}* egin{bmatrix} x\y end{bmatrix} ]

    所以

    [A =egin{bmatrix} T(e1)&T(e2) end{bmatrix} ]


    (T(e))通过平面几何可以很容易求出来。三角形的斜边长度是1,角度是( heta),那么对边是(sin( heta)),即x坐标,邻边是(cos( heta)),即y坐标。

    [ T(e1) = egin{bmatrix} cos( heta)\ sin( heta) end{bmatrix} ]

    同理求得:

    [ T(e2) = egin{bmatrix} -sin( heta)\ cos( heta) end{bmatrix} ]

    因为旋转到x轴的负方向,所以取负值。

    所以

    [ A = egin{bmatrix} cos( heta)&-sin( heta)\ sin( heta)&cos( heta) end{bmatrix} ]

  • 相关阅读:
    在TNSNAMES.ORA文件中配置本机装的oracle
    Eclipse编辑jsp、js文件时,经常出现卡死现象解决汇总
    ExtJs GridPanel 给表格行或者单元格自定义样式
    Ext.core.DomQuery Dom选择器
    JavaScript 常用方法
    ExtJs Ext.data.Model 学习笔记
    JavaScript 深入理解作用域链
    Spring 网路搜集的情报
    SpringMVC 之类型转换Converter详解转载
    SpringMVC @RequestMapping 用法详解之地址映射
  • 原文地址:https://www.cnblogs.com/WeyneChen/p/8471884.html
Copyright © 2020-2023  润新知