zoukankan      html  css  js  c++  java
  • 矩阵与坐标变换

    转自:https://jingyan.baidu.com/article/2c8c281dfbf3dd0009252a7b.html

    http://www.fjutacm.com/Problem.jsp?pid=2566

    一,在平面中,一个点绕任意点旋转θ度后的点的坐标 

    假设对二维空间上任意点(x1,y1),绕一个坐标点(x0,y0)逆时针旋转a角度后的新的坐标设为(x2, y2),有公式:

        x2= (x1 - x0)*cos(a) - (y1 - y0)*sin(a) + x0 ;

        y2= (x1 - x0)*sin(a) + (y1 - y0)*cos(a) + y0 ;

    由该公式易得,

    1,当顺时针旋转时,只需要将 a 变成 -a  就可以了

    2,当 a 为 90度时 ,

    x2 = - ( y1 - y0 ) +x0

    y2 = x1 - x0 + y0

    3,当 a 为 90度时 ,

    x2 =  ( y1 - y0 ) +x0

    y2 = - ( x1 - x0 ) + y0

    4, 当坐标轴,以向右为 x 轴正向 ,向下 轴为 y 轴 时,依然是顺时针有

    x2= (x1 - x0)*cos(a) + (y1 - y0)*sin(a) + x0 ;

    y2= (x1 - x0)*sin(a) - (y1 - y0)*cos(a) + y0 ;

    y 都变成 -y,但是 最后加上 x0,y0 的不能改,这是旋转点的坐标,不能改,

    而前面的是 改变量 ,运算时要要考虑到坐标,所以需要更改。

    二 ,矩阵与坐标转换

    关于上面公式的推导可以在最上面的百度链接里面看到,反正我是没去看证明,

    看上去好麻烦,不过如果用矩阵去证明的话,还是比较简单的,

    毕竟,矩阵创造出来就是用来解决线性代换的问题。


    三大基础初等坐标变化包括

    1,旋转变换:

    图片.png

    2,伸缩变换:

    图片.png

    3,平移变换:

    图片.png

    其他任意初等坐标变换的都可以由这三个变换经有限次复合得到。

    所以任意初等变化都可以表示成以下形式

    图片.png

    比如绕着(a,b)顺时针旋转θ可以看成,平移(-a,-b),旋转θ,平移(a,b)这三步复合得到,即:

    图片.png

    即 :

    所以该式展开就是上面的:

     x2= (x1 - x0)*cos(a) - (y1 - y0)*sin(a) + x0 ;

     y2= (x1 - x0)*sin(a) + (y1 - y0)*cos(a) + y0 ;     只不过是符号换了一下

    再比如,以(a,b)为中心,横坐标扩大n倍,纵坐标扩大m

    总结:任意初等坐标变换的实现可以用矩阵来表示。

    ========== ========= ======== ======== ======= ===== ==== === == =

    一个男人生前要达到什么程度的不可一世,才能避免死于无名?  ——《陈二狗的妖孽人生》

  • 相关阅读:
    Linux 安装apache2时候遇到的问题
    ubuntu安装php时出现error: xml2config not found. Please check your libxml2 installation 的解决办法
    Linux一块网卡绑定2个IP地址
    php 满足条件后跳转的几种方法.
    Linux 安装php 遇到 libtool: link: `ext/date/php_date.lo' is not a valid libtool object
    js 光标移动到输入框最后位置函数
    Linux iptables 防火墙相关命令介绍及使用
    tcpdump的简单选项介绍
    子网掩码转换函数
    Linux 十六进制转换十进制的函数
  • 原文地址:https://www.cnblogs.com/asdfknjhu/p/13757054.html
Copyright © 2011-2022 走看看