一、二维图形变化之基本知识
本章涉及
向量、世界坐标系、用户坐标系、窗口与视
区、齐次坐标、二维变换
等 。需要掌握的
知识
点有:
- 向量、矩阵以及它们的运算
- 坐标系的概念和坐标系之间的变换
- 齐次坐标的概念
- 二维图形的各种变换
- 窗口与视区的变换
1 、引言
向量对于图形学的重要性,
计算机图形学中,主要处理三维世界中的物体对象。所
有需要绘制的对象,都拥有形状、位置和方向等属性 。
需要编写合适的计算机程序来大致描述这些对象,并描述
出围绕在物体周围的光线强度 。
计算出最终在显示器上的每一个像素的值 。
如果没有向量,则会遇到比较棘手的问题 。
比如:
在给定圆锥体、立方体和摄像
机位置的前提下,怎样才能获
得反射影像的准确位置,它的
颜色和形状又如何?
在图形学中,我们可以使用两大基本工具去解决相关的问题:
向量分析 图形变换
通过使用这些工具,我们可以
把相关的几何方法转换成数字去描述 。
2 、向量的一些相关的基础知识
从几何的角度看,向量是具有长度和方向的实体,但是没
有位置 。
而点是只有位置,没有长度和方向 。
在几何中把向量看成从一个点到另一个点的位移。向量算
法提供了一种统一的方法来对几何思想进行代数的表示 。其次:我们所使用的
所有点和向量都是基于某一坐标系定义的 。
从P点到Q点的位移用向量
v = (3, -2)表
示 ,
v是从点P到点Q的向量。两个点的差是一个向量:V
= Q - P 。或者说是
点Q是由点P平移向量v得到的;或者说
v 偏移(offset) P得到Q 。
Q = P + V 。
可以把向量表示成它所有分量的列表,一个n维向量就是
一个n元组:
向量相加 标量(实数)与向量的数乘
如果 a 和 b 是两个向量, s是一个标量, 则
a+b 和 sa 都是有意义的 。
向量的加(减)法可以采用“平行四边形法则”
掌握了向量的加法和数乘,就可以定义任意多个向量的线
性组合 。
m个向量v1,v2,...,vm的线性组合具有如下形式的向量:
有两种特殊的线性组合在计算机图形学中很重要 :
仿射组合 凸组合
仿射组合
:如果线性组合的系数a1,a2,...,am的和等于1,那么它就是仿
射组合。
向量的凸组合
:
凸组合在数学中具有重要的位置,在图形学中也有很多应
用。凸组合是对仿射组合加以更多的限制得来的 。
点积得到一个标量,叉积产生一个新的向量
向量的点积
也就是说,计算点积时,只需将两个向量相应的分量相乘
,然后将结果相加即可 。
点积最重要的应用就是计算两个向量的夹角,或者两条直
线的夹角 。
由于两个向量的点积和它们之间夹角的余弦成正比,可以
得出以下关于两个非零向量夹角与点积的关系:
向量的叉积
两个向量的叉积是另一个三维向量。叉积只对三维向量有
意义。它有许多有用的属性,但最常用的一个是它与原来
的两个向量都正交。
两个向量的叉积a×b是另一个向量,但是这个向量与原来
的两个向量在几何上有什么关系 ?
- a×b和a、 b两个向量都正交
- a×b的长度等于由a和b决定的平行四边形面积
利用叉积求平面的法向量 ,
法向量是空间解析几何的一个概念,垂直于平面的直线所
表示的向量为该平面的法向量 。
将向量分析应用到几何场景处理中是值得研究的内容,把一个场景中众多向量的各种属性搜集起来,并将它们与
在图形学中遇到的实际几何问题相结合,寻找出一个解决
方案,将是非常有用的 。
二、图形坐标系
图形学中,有两大基本工具:
向量分析 、
图形变换
1、坐标系简述
坐标系是建立图形与数之间对应联系的
参考系
,
从维度上看,可分为一维、二维、三维坐标系 。
从坐标轴之间的空间关系来看,可分为
直角坐标系、
极坐标系、圆柱坐标系、球坐标系
等 。
在计算机图形学中,从物体(场景)的建模,到在不同
显示设备上显示、处理图形时同样使用一系列的坐标系 。
对一个给定的问题,并不
总是按像素坐标来考虑 。
显然,希望将程序中用于描述对象几何信息的数值,和那些
用于表示对象中大小和位置的数值区分开来 。
前者通常被看作一个建模(modeling)的任务,后者是一个
观察(viewing)的任务。
图形显示的过程就是几何(对象)模型在不同坐标系之
间的映射变换 。
2、
图形学中坐标系的分类
- 世界坐标系
- 程序员可以用最适合他们手中问题的坐标系来描述对象,并且可以自动的缩放和平移图形,使得其能正确地在屏幕窗口中显示这个描述对象的空间被称为世界坐标系,即场景中物体在实际世界中的坐标 。世界坐标系是一个公共坐标系,是现实中物体或场景的统一参照系,计算机图形系统中涉及的其它坐 z标系都是参照它进行定义的 。
- 建模坐标系
- 又称为局部坐标系。每个物体(对象)有它自己的局部中心和坐标系。建模坐标系独立于世界坐标系来定义物体的几何特性 。
- 一旦定义了“局部” 物体,就可以很容易地将“局部” 物体放入世界坐标系内,使它由局部上升为全局坐标系 。
- 观察坐标系
- 观察坐标系主要用于从观察者的角度对整个世界坐标系内的对象进行重新定位和描述 。依据观察窗口的方向和形状在世界坐标系中定义的坐标系称为观察坐标系。观察坐标系用于指定图形的输出范围 。
- 二维观察变换的一般方法是在世界坐标系中指定一个观察坐标系统,以该系统为参考通过选定方向和位置来制定矩形剪裁窗口 。
- 设备坐标系
- 适合特定输出设备输出对象的坐标系。比如屏幕坐标系在多数情况下,对于每一个具体的显示设备,都有一个单独的坐标系统 。注意:设备坐标是整数 。
- 规范化坐标系
- 规范化坐标系独立于设备,能容易地转变为设备坐标系,是一个中间坐标系。为使图形软件能在不同的设备之间移植,采用规范化坐标,坐标轴取值范围是0 - 1 。
- 观察坐标系通常以视点的位置为原点,由视点的位置和观察的方向即可确定Z轴 。
- 确定与X轴垂直的平面,世界坐标系的上向量在该平面上的投影即Y轴;由Z轴和Y轴,通过左手定则即可确定X轴 。
三、二维图形变换
图形变换和观察是计算机图形学的基础内容之一,也是
图形显示过程中不可缺少的一个环节 。
一个简单的图形, 通过各种变换(如:比例、 旋转、 镜象
、 错切、 平移等) 可以形成一个丰富多彩的图形或图案 。
图形变换的用途:
- 由一个基本的图案, 经过变换组合成另外一个复杂图形 。
- 用很少的物体组成一个场景
- 可以通过图形变换组合得到动画效果 。在计算机动画中, 经常有几个物体之间的相对运动, 可以通过平移和旋转这些物体的局部坐标系得到这种动画效果 。
图形变换的基本原理:
- 图形变化了 ,但原图形的连边规则没有改变 。
- 图形的变化, 是因为顶点位置的改变决定的
变换图形就是要变换图形的几何关系,即改变顶点的坐标;同时,保持图形的原拓扑关系不变 。
- 仿射变换(Affine Transformation或 Affine Map) 是一种二维坐标到二维坐标之间的线性变换 。
- “平直性” 。 即:直线经过变换之后依然是直线
- “平行性” 。 即:平行线依然是平行线, 且直线上点的位置顺序不变)
称为
二维仿射变换(affine transformation ),其中坐标x’ 和y’ 都是原始坐标x和y的线性函数 。参数a, b, c, d, m和n是函数的系数 。 在几何中把向量看成从一个点到另一个点的位移。向量算法提供了一种统一的方法来对几何思想进行代数的表示 。
齐次坐标
在二维平面内,我们是用一对坐标值(x,y) 来表示一个点在平面内的确切位置,或着说是用一个向量(x,y) 来标定一个点的位置 。 假如变换前的点坐标为(x,y) ,变换后的点坐标为(x*,y*) ,这个变换过程可以写成如下矩阵形式 :
上两式是完全等价的。对于向量(x,y,1) ,可以在几何意义上理解为是在第三维为常数的平面上的一个二维向量。
这种用三维向量表示二维向量,或者一般而言,用一个n+1维的向量表示一个n维向量的方法称为齐次坐标表示法 。n维向量的变换是在n+1维的空间进行的,变换后的n维结果是被反投回到感兴趣的特定的维空间内而得到的。
如n维向量(P1,P2,...,Pn)表示为(hp1,hp2,...,hpn, h ),
其中h称为哑坐标 。
- 普通坐标与齐次坐标的关系为“一对多”
- 普通坐标×h → 齐次坐标
- 齐次坐标÷h → 普通坐标
当h = 1时产生的齐次坐标称为“规格化坐标” ,因为前n个坐标就是普通坐标系下的n维坐标 .
- 为什么要采用齐次坐标?
- 在笛卡儿坐标系内,向量(x,y) 是位于z=0的平面上的点;而向量(x,y,1) 是位于z=1的等高平面上的点 。
- 对于图形来说,没有实质性的差别,但是却给后面矩阵运算提供了可行性和方便性 。
- 采用了齐次坐标表示法,就可以统一地把二维线形变换表示如下式所示的规格化形式 :
对于一个图形,可以用顶点表来描述图形的几何关系,用连边表来描述图形的拓扑关系。所以对图形的变换,最后是只要变换图形的顶点表 。
四、基本几何变换
图形的
几何变换是指对图形的几何信息经过平移、比例、旋转等变换后产生新的图形 。
- 平移变换
- 平移是指将p点沿直线路径从一个坐标位置移到另一个坐标位置的重定位过程 。
- 即新的坐标分别在x方向和y方向增加了一个增量和,使得:
平移是一种不产生变形而移动物体的
刚体变换,即物体上的每个点移动相同数量的坐标 。
- 比例变换
- 比例变换是指对p点相对于坐标原点沿x方向放缩 Sx 倍,沿y方向放缩 Sy 倍。其中 Sx 和 Sy 称为比例系数 。
缩放系数S
x和S
y可赋予任何正整数。值小于1缩小物体的尺寸,值大于1则放大物体,都指定为1,物体尺寸就不会改变 。
当Sx=Sy时,变换成为整体比例变换,用以下矩阵进行计算 :
整体比例变换时,若S>1, 图形整体缩小;若0
- 对称变换
- 对称变换也称为反射变换或镜像变换,变换后的图形是原图形关于某一轴线或原点的镜像 。
- 关于X轴对称
- 点P经过关于X轴的对称变换后形成点P*, 则x*=x且y*=-y, 写成齐次坐标的计算形式为 :
- 关于y轴对称
- 点P经过关于X轴的对称变换后形成点P*, 则x*=-x且y*=y, 写成齐次坐标的计算形式为 :
- 旋转变换
- 二维旋转是指将P点绕坐标原点转动某个角度θ(逆时针为正,顺时针为负)得到新的点P*的重定位过程 。
- 首先确定当基准点为坐标原点时,点位置P旋转的变换方程 。
- 应用标准三角特性,利用角度α和θ将转换后的坐标表示为:
- 二维图形绕原点逆时针旋转θ角的齐次坐标计算形式可写为:
- 绕原点顺 时针旋转θ角的齐次坐标计算形式可写为:
- 错切变换
- 在图形学的应用中,有时需要产生弹性物体的变形处理,这就要用到错切变换 。
- 变换矩阵中的非对角线元素大都为零,若变换矩阵中的非对角元素不为0,则意味着x,y同时对图形的变换起作用。也就是说,变换矩阵中非对角线元素起着把图形沿x方向或y方向错切的作用 。
- x值或y值越小,错切量越小; x值或y值越大,错切量越大。其变换矩阵为 :
复合变换是指图形作
一次以上的几何变换,变换结果是每次的变换矩阵相乘 ,从另一方面看,任何一个复杂的几何变换都可以看作基本几何变换的
组合形式。
-
- 在进行复合变换时,需要注意的是矩阵相乘的顺序由于矩阵乘法不满足交换率,因此通常T1 * T2≠T2 * T1,即矩阵相乘的顺序不可交换。
- 坐标系之间的变换
- 图形变换经常需要从一个坐标系变换到另一个坐标系 , 如下例子所示 :
- 例:下图显示了两个笛卡儿坐标系xOy和x’O’y’ , 而O’ 点在xOy坐标系的(X0, y0) 处 。 为了将p(xp, yp) 点从xOy坐标系变换到x’O’y’ 坐标系,如何进行计算? 需建立变换使x’O’y’ 坐标系与xOy坐标系重合
- 可以分两步来进行:
- 将x’O’y’ 坐标系的原点平移至xOy坐标系的原点—平移变换
- 将x’ 轴旋转到x轴上—旋转变换
- 相对任意参考点的二维几何变换
- 比例、旋转变换等均与参考点相关。如要对某个参考点(xf, yf) 作二维几何变换,其变换过程如下:
- 将固定点移至坐标原点,此时进行平移变换
- 针对原点进行二维几何变换
- 进行反平移,将固定点又移回到原来的位置
五、
二维变换矩阵
二维空间中某点的变化可以表示成点的齐次坐标与3阶的二维变换矩阵
T
2d相乘,即:
- 二维图形几何变换的计算
- 几何变换均可表示成: P*=P·T的形式,其中, P为变换前二维图形的规范化齐次坐标, P*为变换后的规范化齐次坐标 , T为变换矩阵。
- 点的变换
- 直线的变换 : 直线的变换可以通过对直线两端点进行变换,从而改变直线的位置和方向 。
- 多边形的变换 : 多边形变换是将变换矩阵作用到每个顶点的坐标位置,并按新的顶点坐标值和当前属性设置来生成新的多边形 。
六、
窗口、视区及变换
1、窗口和视区
世界坐标系中要显示的区域(通常在观察坐标系内定义)称为
窗口
。窗口映射到显示器(设备)上的区域称为
视区
。窗口定义显示什么;视区定义在何处显示 。
世界坐标系中的一个窗口可以对应于多个视区 。为了将窗口内的图形在视区中显示出来 ,必须经过将窗口到视区的变换处理,这种变换就是观察变换 (Viewing Transformation) 。
2、观察变换
当窗口变小时,由于视区大小不变,就可以放大图形对象的某一部分,从而观察到在较大的窗口时未显示出的细节 。 而当窗口变大,视区不变时, 这时就就类似于照相机的变焦处理 。
- 整体缩放效果
- 当窗口大小不变而视区大小发生变化时,得到整体放缩效果。这种放缩不改变观察对象的内容 。
如果把一个固定大小的窗口在一幅大图形上移动,视区不变,就会产生漫游效果 。
- 窗口到视区的变换
- 为了全部、如实地在视区中显示出窗口内的图形对象,就必须求出图形在窗口和视区间的映射关系需要根据用户所定义的参数,找到窗口和视区之间的坐标对应关系 。
- 这个映射是“保持比例”的映射,保持比例的性质使得这个映射有线性形式:
其中A、 B、 C、 D是常数
七、二维几何变换小结
这里主要复习一下
向量的基本知识、坐标系的分类、齐次坐标、二维变换等、窗口与视区等知识 。
1 、向量基本知识
为了处理二维、三维图形 ,引入了向量这一分析计算工具 。主要讲解了向量的定义、基本运算、线性组合、叉积、点积等知识 。
2、坐标系的分类
坐标系是建立图形与数之间对应联系的参考系 ,在计算机图形学中,从物体(场景)的建模,到在不同显示设备上显示,需要使用一系列不同的坐标系 。
- 世界坐标系:是一个公共坐标系,是现实中物体或场 景的统一参照系 。
- 局部坐标系:又称为局部坐标系。每个物体(对象)有它自己的局部中心和坐标系 。
- 除此之外, 还有观察坐标系、设备坐标系、规格化坐标系等 。
3、 二维图形几何变换
图形变换和观察是计算机图形学的基础内容之一,也是图形显示过程中不可缺少的一个环节 。
- 齐次坐标
- 用一个n+1维的向量表示一个n维向量的方法称为齐次坐标表示法。对于图形来说,没有实质性的差别,但是却给后面矩阵运算提供了可行性和方便性 。
- 物体变换和坐标变换
- 有两种方式去看待一个变换:一种是物体变换,另一种是坐标变换。物体变换使用同一个规则改变物体上所有的点,但是保证底层坐标系不变 。
坐标变换按照原坐标系统定义了一个全新的坐标系统,然后在新坐标系下表示物体上所有的点 。
两种变换紧密联系,各有各的长处 。
- 复合坐标
- 也称组合变换。实际应用中很少只需要单一的基本变换,通常要构造一个几种基本变换的组合变换 。
组合变换的变换矩阵是几个单独变换矩阵的乘积 。
由于矩阵乘法不满足交换率,因此在进行复合变换时,需要注意的是矩阵相乘的顺序 。
4、 窗口视区及变换
- 窗口
- 视区
- 窗口到视区的变换
- 为了全部、如实地在视区中显示出窗口内的图形对象,就必须求出图形在窗口和视区间的映射关系 。