zoukankan      html  css  js  c++  java
  • 图形变换(转)

    主要内容:图形处理是CAD/CAM中的关键技术,包括图形生成、编辑和图形变换。

     

    计算机图形学

    计算机图形学的概念

    计算机图形学的研究内容

    图形变换

    点的变换

    二维图形的变换

    二维图形的齐次变换

    二维图形的基本变换

    复合变换

    三维图形的齐次变换

     

    三维图形的基本变换

    复合变换

    1、什么是计算机图形学

    计算机图形学(Computer Graphics)是近30年来发展迅速、应用广泛的新兴学科,是计算机科学最活跃的分支之一。计算机图形学是研究在计算机中如何表示图形,以及利用计算 机进行图形的计算、处理和显示的相关原理与算法的一门学科。随着计算机技术的发展,计算机图形学在CAD/CAM等计算机应用领域中占有越来越重要的地 位。

    计算机图形学的研究内容是十分丰富的。虽然许多研究工作已经进行了多年,取得了不少成果,但 随着计算机技术的进步和图形显示技术应用领域的扩大和深入,计算机图形学的研究、开发与应用还将得到进一步的发展。

     

    2、图形变换的概念

    根据需要将已定义的图形从屏幕的某一位置移动到另一位置,或改变图形的大小和形状或利用已有 的图形生成复杂的图形,这种图形处理的方法称为图形的几何变换,简称图形变换。图形变换是计算机图形学的核心基础,通过图形变换,能够很方便地由简单图形 派生出所需要的图形。图形变换主要包括二维图形和三维图形的几何变换,投影变换等。图形变换通常采用矩阵变换的方法,图形变换不同,其变换矩阵也不同,本 节将重点介绍图形变换的矩阵方法及图形变换的程序设计。

    2.1 点的变换

    在计算机绘图中,常常要进行诸如比例、对称、旋转、平移、投影等各种变换,图形可以用点集来 表示,也就是点集定了,图形也就确定了。如果点的位置变了,图形也就随之改变。因此,要对图形进行变换,只要变换点就可以了。

       由于点集可以用矩阵的方法来表达,因此对点的变换可以通过相应的矩阵运算来实现,即   旧点(集)×变换矩阵 矩阵运算 新点(集)。

    2.2 二维图形变换

    二维图形变换主要包括比例,对称、错切、旋转、平移等。

    点的变换可以通过矩阵运算来实现,令,把它称为变 换矩阵。则有

    这里,为变换前点的 坐标,为变换后点的坐标。变换矩阵中a, b, c, d的不同取值,可以实现各种不同变换,从而达到对图形进行变换的目的。

    2.2.1 比例变换(以原点为中心)

    比例变换是指变换后的点的两个坐标分别与变换前 点的两个坐标成比例。很显然,比例变换矩阵为

    点的变换表示为:

            

               等比例变换                               不等比例变换

    讨论:

    若sx=sy=1, 则为恒等变换,即变换后点的坐标不变。

    若sx=sy≠1,则为等比例变换,变换结果是图形等比例放大(sx=sy>1)或等 比例缩小(sx=sy>1)。

    若sx≠sy,变换结果是图形产生畸变。

    2.2.2 对称变换

    对称变换是指变换后的点与变换前的点对称于X轴或Y轴,或对称于某一特定的直线(如45° 线),或对称于某一特定的点(如原点)。

    在变换矩阵中, 当:a=1, d=-1, b=c=0时产生对X轴的对称变换;

    a=-1, d=1, b=c=0时产生对Y轴的对称变换;

    a=-1, d=-1, b=c=0时产生队原点的对称变换。

    当:a=d=0, b=1,c=1,时产生对+±45°的对称;

    a=d=0, b=-1, c=-1时产生对-45°的对称。

    2.2.3 错切变换

    在变换矩阵中,若矩阵的 主对角元素a=d=1,而矩阵的次对角元素有一个不为零时,则使图形产生沿X轴或Y轴的错切变换。

    1)沿X轴错切

    令b=0,沿x向错切变换矩阵为

    ,经此变换 后,y坐标不变,x坐标有一增量cy,这就相当于平行于y轴的线向x轴错切成与x轴成α角的直线,且有c>0, 沿+x向错切;c<0,沿-x向错切。

    2)沿y错切

    令c=0,,则,如图所 示,变换的结果是x  坐标不变,而y坐标产生一增量bx,使原来平行于X轴的线倾斜成与y轴成θ角的直线,且有 b>0沿+y向错切;b<0时,沿-y向错切。

    注意:上述错切方向均是指第Ⅰ象限的点而言,其余象限的点的错切方向应作相应的改变。

          

    沿Y向错切           旋转变化                     平移变化

    2.2.4 旋转变换(绕原点)

    规定:图形的旋转是绕坐标原点旋转θ角,且逆时针为正,顺时针为负,变换矩阵为:

    ,对点进行旋 转变换,即60°

    2.2.5 平移变换

    如图所示,点P(x, y)平移到,新位置的坐 标表示为:

    ,即

    2.3 二维图形的齐次坐标

    从上面的讨论可知,平移与比例、旋转变换的变换矩阵结构不一致,平移变换时需要作加法,而其 他变换则作乘法,这样就不可能组合这三个变换为一个合成矩阵,从而给运算带来不便。因此引入齐次坐标变换。

    2.3.1 齐次坐标

    所谓齐次坐标就是将一个原本是n维的向量用一个n+1维向量来表示。如向量的齐次坐标 表示为,其中h是一个实数。显然一个向量的齐次表示不是唯一的,齐次坐标的h取不同的值都表示的是同一个点,比如齐次坐标 [8,4,2]、[4,2,1]表示的都是二维点[4, 2]。当h=1时的齐次坐标称为规格化齐次坐标。

    那么引进齐次坐标有什么必要,它有什么优点呢?

    1) 它提供了用矩阵运算把二维、三维甚至高维空间中的一个点集从一个坐标系变换到另一个坐标系的有效方法。

    2)它可以表示无穷远的点。n+1维的齐次坐标中如果h=0,实际上就表示了n维空间的一个 无穷远点。对于齐次坐标[a, b, h],保持a, b不变,的过程就表示 了在准坐标系中的一个点沿直线 ax+by=0 逐渐走向无穷远处的过程。

    2.4 二维图形的齐次坐标矩阵变换

    2.4.1 基本变换

    用齐次坐标表示点的变换将非常方便,二维齐次坐标变换的矩阵的形式是:

     

    这个矩阵每一个元素都是有特殊含义的。

    其中 使平面图形产 生比例、对称、错切、旋转;使平面图形产生平移变换;s则可产生全比例变换。

    引入齐次坐标后,点P(x, y) 和其变换后的点的齐次坐标就 是[x y 1]和,变换表达式 为:                                                       

    二维图形各种基本变换的变换矩阵及图示如表4-1所示。

     

    表4-1

    变换类型

    变换矩阵

    矩阵元素的说明

    变换图示

    平移变换

    m, n分别是在X轴,Y轴上的平移量

    比例变换

    分别是X,Y 向的比例系数

    全比例变换

    S是全图的比例系数

     

     

    对称变化

     

    以X轴对称

    以Y轴对称

    以坐标原点对称

    以45º直线对称

    以-45º直线对称

    错切变换

     

    沿X轴向错切

    沿Y轴向错切

    旋转变换

    是旋转角,逆 时针旋转取正值,反之取负值

    2.4.2 复合变换

    在实际图形变换中,经常需要对图形连续施行几个基本变换,这种由若干个基本变换组成的变换称 为复合变换。

    如图4-1所示,将图形绕任一点旋转角, 可用以下三个基本变换实现

    将旋转中心C和图形平移,C点和原点 重合;

    将平移后的图形绕原点旋转角;

    将旋转后的图形平移

    这样就使下面图形绕任一点C旋转角。将图形依 次作上述三个变换,相当于将上述的三个矩阵相乘。因此图形绕任一点作逆时针旋转角的变换矩阵 为:

    几个变换矩阵依次相乘称为变换矩阵的级联。利用变换矩阵的级联可得到总变换矩阵。在求变换矩 阵的级联中,基本变换次序是不能改变的。

      3、 三维图形变换

    3.1 三维图形基本几何变换

    三维几何变换包括平移、旋转、比例和错切。与二维图形变换类似,用适当的变换矩阵也可以对三 维图形进行各种变换。一个三维空间点P点的齐次坐标记 为。 变换后的点的坐标记为。三维几何变换可以表示为三维齐次坐标和4×4变换矩阵的乘积。变换矩阵为:

    ,其中,子阵使三维图形 产生比例、对称、错切、旋转变换;l,m,n 产生平移变换;s可产生全比例变换。

    3.1.1 平移

    平移是将对象从一个位置(x, y, z)移到另一个位置(x′,y′, z´)的变换。

    变换矩阵为:,其 中,l,m,n分别为X,Y,Z轴上的平移量。

    3.1.2 比例

    比例变换指将原有的图形在X,Y,Z三个方向上进行放大或缩小的变换。

        设是物体在 X,Y,Z轴三个方向的比例系数,则有变换矩阵:

     时,可使整个 图形按统一比例放大或缩小。

    3.1.3 对称变换                                                 

    对称变换也称为镜像变换。三维对称变换是相对于坐标面进行的。

    对XOY平面的对称变换变换矩阵为:

    对YOZ平面的对称变换

    对XOZ平面的对称变换

    3.1.4  错切变换

    错切变换是使图形沿错切方向的坐标发生变换,而另一方向的坐标值不变,

    从而达到使原图形发生特定变化的目的。

    变换矩阵为:

    3.1.5  旋转

    二维旋转变换指绕坐标原点或任意点旋转,而三维旋转指绕坐标轴或任意轴旋转,分为三种基本旋 转:绕z轴旋转,绕x轴旋转,绕y轴旋转。通常规定,从坐标轴正向往原点看,逆时针方向为正。

     

    绕Z轴的旋转变换, 变换矩阵为:

    绕X轴的旋转变换,变换矩阵为:

    绕Y轴的旋转变换, 变换矩阵为:

    3.2 三维图形的复合变换 

    如果旋转所绕的轴不是坐标轴,而是任一直线,则变换过程变显得较复杂。例如,绕空间任一直线 旋转q角,可通过以下步骤完成。

    1平移,使直线经过坐标原点;

    2 使直线绕X轴旋转角度,使其与 XOZ共面,再绕Y轴旋转角,使其与Z轴重合;

    3 将需变换的图形绕Z轴旋转q角;

    4 对步骤2作逆变换,使其回到原先的方位角;

    5 对步骤1作逆变换,将轴平移到原位。

    3.3 投影变换

    3.3.1 概念 

    投影(project)是一种使三维对象映射为二维对象的变换。它可描述 为:project(object(x,y,z)) →object(x′,y′)。投影的要素除投影对象,投影面外,还有投影线。按照投影线角度的不同,有两种基本投影方法:

    1)平行投影(parallel projection)。它使用一组平行投影线将三维对象投影到投影平面上去,如下图所示。

     

        2)透视投影(perspective projection)。它使用一组由投影中心产生的放射投影线,将三维对象投影到投影平面上去。

    由平行投影方法表现三维对象的图,称为正视图和轴测图,由透视投影方法表现三维对象的图,称 为透视图。

    平行投影有两种方法:

    1)正交平行投影(orthographic P.P.) 投影线与投影平面成90°角。

    将三维物体正交平行投影于xoz和yoz平面上,分别获主视图与侧视图。设计中常用正交平行 投影来产生三视图称为正视图。它们具有x,y方向易于测量的特点,因此作为主要的工程图纸。

    2)斜交平行投影(oblique P.P.) 投影线与投影面成α交角。斜交平行投影也称轴测投影,所获的图称轴测图。

    3.3.2 正平行投影(三视图)

        投影方向垂直于投影平面的投影称为正平行投影,我们通常所说的三视图均属于正平行投影。三视图的生成就是把x、y、z坐标系的形体投影到z=0的平面,变 换到u、v、w坐标系。一般还需将三个视图在一个平面上画出,这时就得到下面的变换公式,其中(a,b)为u、v坐标系下的值,tx、ty、tz均如图中 所示。

       1)主视图

    主视图是立体在XOZ坐标面上的投影,将立体上的全部Y 坐标变为0 ,而X, Z不变,可获得主视图,其变换矩阵为:

    (2)俯视图变换矩阵

    俯视图是立体在XOY坐标面上的投影。 将立体上的Z坐标变为0;按三视图展开后的配置,应把俯视图绕X轴顺时针转90º,为使其与主视图保持一定的距离,应下一定距离,因此俯视图 的变化矩阵为:

        (3)左视图变换矩阵

    左视图是立体在XOY坐标面上的投影,将立体的X坐标变为0,在绕Z轴逆时针旋转90º,为 与主视图保持一定的距离,应使左视图向右移一个距离,变换矩阵 为:

    3.3.3 轴测投影变换

    用平行投影法将物体连同确定该物体的直角坐标系一起沿不平行于任一坐标平面的方向投射到一个 投影面上,所得到的图形,叫作轴测投影,简称轴测图 。

    投影面P称为轴测投影面,投射线S的方向称为投射方向

    (1)正轴测投影:投影方向垂直轴测投影面

    正轴测图的形成:

     正轴测可以看成先将空间物体绕Z轴逆时针旋转一个角度γ,则投影就可以反映两个面的性质, 再将物体向前倾一个角度α(绕X轴顺时针旋转α角),最后向XOZ面(即V面)投影而得到。

    变换矩阵:

    时的得到正轴 测图称为正等测。

    (2)几个基本概念

    1)空间坐标轴OX、OY、OZ在轴测投影面上的投影O1X1、O1Y1、O1Z1称为轴测 投影轴,简称轴测轴。

    2)轴间角:轴测轴之间的夹角称作轴间角

    3)轴向伸缩系数:轴测单位长度与空间坐标单位长度之比,称为轴向伸缩系数

    沿O1X1轴的轴向伸缩系数:O1A1 /OA=p,

    沿O1Y1轴的轴向伸缩系数:O1B1/OB=q

    沿O1Z1轴的轴向伸缩系数:O1C1/OC=r

    (3)轴测投影的种类

    正轴测投影:投射方向垂直于轴测投影面

    1)正等轴测投影:p=q=r=2/3≈0.82 , 正等测轴测投影的轴间角均为120º,在变换矩阵中,

    2)正二等轴测投影:p=r≠q, p=q=0.94, r=0.47, 轴间角∠x’o’z’=97º101, ∠y’o’z’= ∠x’o’y’=131º25’, 在变换矩阵中

    3)正三等轴测投影:p≠q≠r

    斜轴测投影 : 用平行斜角投影法得到的轴测投影称为斜轴测投影。投射方向倾斜于轴测投影面。 斜轴测投影变换是通过将物体先沿x含y错切,再沿z含y错切,最后向V面投影实现。其变换矩阵为

    轴测投影面P平行于XOZ坐标面,投影方向不应平行于任何坐标面,凡是平行于XOZ坐标面的 平面形,其斜轴测投影均反映实形。

    1)斜二等轴测投影的伸缩系数为p=r=1,q=0.5

    轴间角为:∠XOZ=90°∠XOY=∠YOZ=135° 变换矩阵中d=f=0.354

    2)斜三等轴测投影:p≠q≠r

     

  • 相关阅读:
    apache 虚拟主机配置(根据不同的域名映射到不同网站)
    Tortoise SVN 使用笔记
    Apache 根据不同的端口 映射不同的站点
    jquery 获取当前元素的索引值
    修改ThinkPHP的验证码类
    NetBeans无法使用编码GBK安全地打开该文件
    在win2003下apache2.2无法加载php5apache2_4.dll
    我看软件工程
    PHP函数参数传递(相对于C++的值传递和引用传递)
    Notepad++ 使用正则表达式查找替换字符串
  • 原文地址:https://www.cnblogs.com/nsnow/p/1790898.html
Copyright © 2011-2022 走看看