zoukankan      html  css  js  c++  java
  • 二维图形的几何变换【转】

    转自:lab104_yifan
    http://blog.csdn.net/accelerator_/article/details/39253983

    1、基本几何变换及变换矩阵

    基本几何变换都是相对于坐标原点和坐标轴进行的几何变换,有平移、比例、旋转、反射和错切等。

    1.1 平移变换

    是指将p点沿直线路径从一个坐标位置移到另一个坐标位置的重定位过程。他是一种不产生变形而移动物体的刚体变换(rigid-body transformation),如下图所示。

     图1-1 平移变换

        推导:

        求得平移变换矩阵如下:

     其中Tx,Ty称为平移矢量。

    1.2 缩放变换

    缩放变换是指对p点相对于坐标原点沿x方向放缩Sx倍,沿y方向放缩Sy倍。其中Sx和Sy称为缩放系数。

    图1-2缩放变换(Sx=2,Sy=3)

       推导:

       矩阵:

    缩放变换可改变物体的大小,如下图所示。当Sx=Sy >1时,图形沿两个坐标轴方向等比例放大;当Sx=Sy<1,图形沿两个坐标轴方向等比例缩小;当Sx≠Sy,图形沿两个坐标轴方向作非均匀的比例变换。

    图1-3比例变换
    (a)Sx与Sy相等                                                      (b)Sx与Sy不相等  

    1.3 旋转变换

    二维旋转是指将p点绕坐标原点转动某个角度(逆时针为正,顺时针为负)得到新的点p’的重定位过程。

    图1-4旋转变换

        推导:利用极坐标方程

     逆时针旋转θ角的矩阵如下:

    1.4 对称变换

    对称变换后的图形是原图形关于某一轴线或原点的镜像。

    图1-5对称变换

      (1)关于x轴对称

    图1-6关于x轴对称

     (2)关于y轴对称

    图1-7关于y轴对称

     (3)关于原点对称

    图1-8关于原点对称

      (4)关于y=x轴对称

    图1-9关于y=x轴对称

      (5)关于y=-x轴对称

    图1-10关于y=-x轴对称

    1.5 错切变换

    错切变换也称为剪切、错位变换,用于产生弹性物体的变形处理。

    图1-11错切变换

     错切变换的变换矩阵为:

        (1)沿x方向错切:b=0
        (2)沿y方向错切:c=0
        (3)两个方向错切:b和c都不等于0。

    2、 复合变换

    如果图形要做一次以上的几何变换,那么可以将各个变换矩阵综合起来进行一步到位的变换。复合变换有如下的性质:

    1)复合平移

    对同一图形做两次平移相当于将两次的平移两加起来:

    2)复合缩放

    两次连续的缩放相当于将缩放操作相乘:

    3)复合旋转

    两次连续的旋转相当于将两次的旋转角度相加:

    缩放、旋转变换都与参考点有关,上面进行的各种变换都是以原点为参考点的。如果相对某个一般的参考点(xfyf)作缩放、旋转变换,相当于将该点移到坐标原点处,然后进行缩放、旋转变换,最后将(xfyf)点移回原来的位置。

    4)关于(xfyf)点的缩放变换

    5)绕(xfyf)点的旋转变换

    3、二维图形几何变换的计算

    几何变换均可表示成P’=P*T的形式

    (1)点的变换:先将点表示为规范化齐次坐标形式,再乘以变换矩阵。

    (2)直线的变换:将直线的两个端点表示为规范化齐次坐标形式,再乘以变换矩阵。

    (3)多边形的变换:将多边形的顶点表示为规范化齐次坐标形式,再乘以变换矩阵。

     (4)曲线的变换:将曲线的每个点表示为规范化齐次坐标形式,再乘以变换矩阵。

    4、复合变换的矩阵点乘的先后问题

    1)如果采用以下方式计算几何变换的变换矩阵:

    如上范例所示,其先执行变换的矩阵放在前面,后执行变换的矩阵放在后面。

    2)如果采用以下方式计算几何变换的变换矩阵:

    如上范例所示,其先执行变换的矩阵放在后面,后执行变换的矩阵放在前面。

    这是因为矩阵的特性:

    题目:

      点绕点旋转,正方形=邻点不为0+对点不为0+四边相等+对边相等

      http://codeforces.com/contest/474/problem/C

      

  • 相关阅读:
    Java有关异常处理的小程序
    Java有关多态类的小程序
    Java接口与继承部分的小程序
    Java有关数组的小程序
    Java有关字符串部分的小程序
    Java有关类与对象部分的小程序
    java递归和递推应用的小程序
    第八周进度表
    软件工程概论团队
    课堂结队作业:四则作业网页版
  • 原文地址:https://www.cnblogs.com/XDJjy/p/4020907.html
Copyright © 2011-2022 走看看