zoukankan      html  css  js  c++  java
  • 二维图形几何变换及窗口视区变换

    四、基本几何变换

    图形的几何变换是指对图形的几何信息经过平移、比例、旋转、等变换后产生新的图形。

    1、平移变换

    平移是一种【不产生变形】而移动物体的【刚体变换】,即物体上的每个点移动相同数量的坐标。下图是点P(x,y)平移到P*(x*,y*).

    齐次坐标的计算形式为:



    Tx,Ty称为【平移矢量】

    2、比例变换

    比例变换是指对P点相对于坐标原点沿x轴方向缩放Sx倍,沿y方向缩放Sy倍,其中Sx,Sy称为比例系数,可以赋予任何【正整数】,值小于1缩小物体的尺寸,值大于1则放大物体,都指定为1,物体尺寸就不会改变。

    齐次坐标的计算形式为:


    3、对称变换

    对称变换也称为反射变换或镜像变换,变换后的图形是原图形关于一轴线或原点的镜像。

    (1)关于x轴对称


    齐次坐标的计算形式为:


    (2)关于y轴对称


    齐次坐标的计算形式为:



    4、旋转变换



    首先确定当基准点为坐标原点时,点位置P旋转的变换方程,应用标准三角特性,利用角度α,θ将转换后的坐标表示为:



    在极坐标系中点的原始坐标为:


    将x,y代入上式,就得到相对于原点将在位置(x,y)处的点旋转θ角的变换方程



    二维图形绕原点【逆】时针旋转θ角的齐次坐标计算式可写为:


    二维图形绕原点【顺】时针旋转θ角的齐次坐标计算式可写为:

    5、错切变换

    在图形学的应用中,有时需要产生弹性物体的变形处理,这就需要用到错切变换。


    变换矩阵中的非对角线元素大都为零,若变换矩阵中的非对角元素不为0,则意味着x,y同时对图形的变换起作用。也就是说。变换矩阵中非对角线元素起着把图形沿x方向或y方向错切的作用。

    x值或y值越小,错切量越小;x值或y值越大,错切量越大。其变换矩阵为:

    (1)沿x方向错切
    当b=0时,有:


    四、复合变换

    复合变换就是指图形作一次以上的几何变换,变换结果是每次的【变换矩阵相乘】
    ——>任何一个复杂的几何变换都可以看作基本几何变换的组合形式。

    (1)二维复合平移
    p点经过两次【连续】的平移后,其变换矩阵可写为:

    (2)二维复合比例平移
    p点经过两个【连续】比例变换后,其变换矩阵可写为:

    ——>两个连续比例变换是相乘的

    (3)二维复合旋转
    p点经过两个【连续】旋转变换后,其变换矩阵可写为:

    ——>两个连续旋转是相加的

    【注意:矩阵乘法不满足交换率】

    (4)坐标系之间的变换
    eg:下图显示了两个笛卡尔坐标系xoy和x'o'y',而o'点在xoy坐标系的(x0,y0)处,为了将p(xp,yp)点从xoy坐标系变换到x'o'y'坐标系如何进行计算?


    可分为两步进行:
    1>将x'o'y'坐标系的原点平移至xoy坐标系的原点——平移变换
    2>将x'轴旋转到x轴上——旋转变换


    变换矩阵表示为:


    (5)相对任意参考点的二维几何变换
    比例、旋转变换等均与参考点相关,变换过程如下:
    a、将固定点移至坐标原点,此时进行平移变换
    b、针对原点进行二维几何变换
    c、进行反平移,将固定点又移回原来的位置

    五、二维变换矩阵
    二维空间中某点的变化可以表示成点的齐次坐标与3阶的二维变换矩阵T2d相乘,即:




    六、二维几何变换的计算

    (1)点的变换

    (2)直线的变换
    直线的变换可以通过对直线两端点进行变换,从而改变直线的位置和方向


    (3)多边形的变换
    多边形的变换是将变换矩阵作用到【每个顶点】的坐标位置,并按新的顶点坐标值和当前属性设置来生成新的多边形。

    七、窗口视区变换

    1、窗口和视区
    【世界坐标系中】要显示的区域称为窗口,窗口定义显示什么。
    窗口映射到【显示器(设备)上】的区域称为视区,视区定义在何处显示。


    世界坐标系中的一个窗口可以对应于多个视区。

    2、观察变换
    (1)变焦距效果


    当窗口变小时,由于【视区大小不变】,就可以放大图形对象的某一部分,从而观察到在较大的窗口时未显示出的细节。
    ——>类似于照相机的变焦处理

    (2)整体缩放效果
    当窗口大小不变而视区大小发生变化时,得到整体放缩效果,这种放缩【不改变】观察对象的内容。


    若把一个固定大小的窗口在一幅大图形上移动,视区不变会产生【漫游效果】

    3、窗口到视区的变换


    窗口到视区的【映射】【基于一个等式】,即对每一个在世界坐标下的点(x,y),产生屏幕坐标系中的一个点(sx,sy)

    这个映射是“保持比例”的映射——>使得这个映射有线性形式


    其中A、B、C、D是常数

    首先考虑x的映射,保持比例的性质说明:



    又因为

    ,可知:A看作放大x的部分,C看作常数

    同理,y方向上保持比例性质满足:


    这个映射可用于【任意点(x,y)】,不管它是否在窗口之中。
    在窗口【中】的点映射到视区【中】的点,在窗口【外】的点映射到视区【外】的点。

  • 相关阅读:
    浅析软件开发项目的前期沟通工作
    .net core 和 WPF 开发升讯威在线客服系统:实现对 IE8 的完全完美支持 【干货】
    产品的定价策略(一):想通过产品挣钱,首先你产品的目标客户得不差钱
    .net core 和 WPF 开发升讯威在线客服系统:使用线程安全的 BlockingCollection 实现高性能的数据处理
    .net core 和 WPF 开发升讯威在线客服系统:使用 TCP协议 实现稳定的客服端
    .net core 和 WPF 开发升讯威在线客服系统:使用 WebSocket 实现访客端通信
    Centos上配置两层nginx转发,把请求转发到外网
    真实字节二面:什么是伪共享?
    关于MVCC,我之前写错了,这次我改好了!
    从家庭主妇到格力老总,董明珠的大女主逆袭之路
  • 原文地址:https://www.cnblogs.com/Penglimei/p/9728470.html
Copyright © 2011-2022 走看看