二维图形变换

Posted by Haiden on April 9, 2019

一、向量基础知识

向量是具有长度和方向的实体。

1.1 向量的表示

从P点到Q点的位移用向量v = (3,-2)表示,v是从点P到点Q的向量。两个点的差是一个向量:v = Q - P

把向量表示成它所有分量的列表,一个n维向量就是一个n元组:

1.2 向量基本运算

向量允许两个基本操作:向量相加 、标量(实数)的数乘

如果 a 和 b 是两个向量,s是一个标量,a+b 和 sa 都是有意义的。

1.3 向量线性组合

m个向量$v_{1}$,$v_{2}$,…,$v_{m}$的线性组合具有如下形式的向量:

w = $a_{1}v_{1} + a_{2}v_{2} + a_{3}v_{3} + a_{4}v_{4} +…+a_{n}v_{n}​$

有两种特殊的线性组合在计算机图形学中很重要:仿射组合和 凸组合

1)仿射组合

如果线性组合的系数a1,a2,…,am的和等于1,那么它就是仿射组合

$a_{1} + a_{2} + a_{3} +…+ a_{m}​$ = 1

2) 向量的凸组合

凸组合在数学中具有重要的位置,在图形学中也有很多应用。凸组合是对仿射组合加以更多的限制得来的

$a_{1} + a_{2} + a_{3} +…+ a_{m}$ = 1 ; i = 1,2,….,m ; $a_{i}​$ >= 0

1.4 向量的点积和叉积

点积得到一个标量,叉积产生一个新的向量。

1) 向量的点积

​ a = $(a_{1},a_{2})$ b = $(b_{1},b_{2})​$

​ a·b = $a_{1}b_{1} + a_{2}b_{2}​$

计算点积时,只需将两个向量相应的分量相乘,然后将结果相加即可

2)向量的叉积

两个向量的叉积是另一个三维向量。它与原来的两个向量都正交。

a×b和a、b两个向量都正交

a×b的长度等于由a和b决定的平行四边形面积 : $a × b = \mid a \mid \mid b\mid sin(θ)​$

二、坐标系基本概念

坐标系是建立图形与数之间对应联系的参考系。

2.1 坐标系的分类

从维度上看,可分为一维、二维、三维坐标系。

从坐标轴之间的空间关系来看,可分为直角坐标系、极坐标系、圆柱坐标系、球坐标系等。

2.2 计算机图形学中坐标系的分类

1)世界坐标系

描述对象的空间被称为世界坐标系,即场景中物体在实际世界中的坐标。

世界坐标系是一个公共坐标系,是现实中物体或场景的统一参照系。

2)建模坐标系

又称为局部坐标系。每个物体(对象)有它自己的局部中心和坐标系,建模坐标系独立于世界坐标系来定义物体的几何特性。

3)观察坐标系

观察坐标系主要依据观察窗口的方向和形状对整个世界坐标系内的对象进行重新定位和描述。

4)设备坐标系

适合特定输出设备输出对象的坐标系。比如屏幕坐标系。

5)规范化坐标系

规范化坐标系独立于设备,能容易地转变为设备坐标系,是一个中间坐标系。为使图形软件能在不同的设备之间移植,采用规范化坐标。

三、图形变换

3.1 图形变换的用途

一个简单的图形,通过各种变换(如:比例、旋转、镜象、错切、平移等)可以形成一个丰富多彩的图形或图案。

1)由一个基本的图案,经过变换组合成另外一个复杂图形。

2)用很少的物体组成一个场景。

3)可以通过图形变换组合得到动画效果。

3.2 图形变换的基本原理

变换图形就是要变换图形的几何关系,即改变顶点的坐标;同时,保持图形的原拓扑关系不变。

仿射变换是一种二维坐标到二维坐标之间的线性变换,有两个特性:

1)平直性:直线经过变换之后依然是直线 2)平行性:平行线依然是平行线,且直线上(点的位置顺序不变)

四、齐次坐标

假如变换前的点坐标为(x,y),变换后的点坐标为 (x* ,y* ) ,这个变换过程可以写成如下矩阵形式:

对于向量(x,y,1),可以在几何意义上理解为是在第三维为常数的平面上的一个二维向量。

这种用三维向量表示二维向量,或者一般而言,用一个n+1维的向量表示一个n维向量的方法称为齐次坐标表示法。

普通坐标与齐次坐标的关系为“一对多”

普通坐标×h→齐次坐标

齐次坐标÷h→普通坐标

其中h称为哑坐标。当h = 1时产生的齐次坐标称为“规格化坐标”。

为什么要采用齐次坐标?

在笛卡儿坐标系内,向量(x,y)是位于z=0的平面上的点;而向量(x,y,1)是位于z=1的等高平面上的点。

采用了齐次坐标表示法,就可以统一地把二维线形变换表示 如下式所示的规格化形式:

五、基本几何变换

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

p(x, y) 表示平面上一个未被变换的点 p* (x* , y*) 变换后的新点坐标

5.1 平移变换

平移是指将p点沿直线路径从一个坐标位置移到另一个坐标位置的重定位过程。

即新的坐标分别在x方向和y方向增加了一个增量和。 , $T_{x}$,$T_{y}​$称为平移矢量

平移变换的齐次坐标计算形式如下:

平移是一种不产生变形而移动物体的刚体变换,即物体上的每个点移动相同数量的坐标。

5.2 比例变换

比例变换是指对p点相对于坐标原点沿x方向放缩$S_{x}​$倍,沿y方向放缩$S_{y}​$倍。其中$S_{x}​$和$S_{y}​$称为比例系数

比例变换的齐次坐标计算形式如下:

缩放系数$S_{x}$和$S_{y}$可赋予任何正整数。值小于1缩小物体的尺寸,值大于1则放大物体,都指定为1,物体尺寸就不会改变。

当$S_{x}$=$S_{y}$时,变换成为整体比例变换,用以下矩阵进行计算:

整体比例变换时,若S>1,图形整体缩小;若0<S<1,图形整体放大;若S<0,发生关于原点的对称等比变换。

5.3 对称变换

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

(a)关于X轴对称

点P经过关于X轴的对称变换后形成点$P^{}​$,则 $x^{}​$ =x 且 $y^{*}​$ =-y,写成齐次坐标的计算形式为:

(b)关于y轴对称

点P经过关于Y轴的对称变换后形成点$P^{}$,则 $x^{}$ =-x 且 $y^{*}$ =y,写成齐次坐标的计算形式为:

5.4 旋转变换

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

应用标准三角特性,利用角度α和θ将转换后的坐标表示为:

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

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

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

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

5.5 错切变换

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

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

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

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

六、复合变换

复合变换是指图形作一次以上的几何变换,变换结果是每次的变换矩阵相乘。

任何一个复杂的几何变换都可以看作基本几何变换的组合形式。

6.1 二维复合平移

p点经过两次连续平移后,其变换矩阵可写为:

6.2 二维复合比例变换

p点经过两个连续比例变换后,其变换矩阵可写为:

6.3 二维复合旋转

p点经过两个连续旋转变换后,其变换矩阵可写为:

6.4 相对任意参考点的二维几何变换

比例、旋转变换等均与参考点相关。如要对某个参考点(xf,yf)作二维几何变换,其变换过程如下:

a、将固定点移至坐标原点,此时进行平移变换 b、针对原点进行二维几何变换 c、进行反平移,将固定点又移回到原来的位置

七、二维变换矩阵

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

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

几何变换均可表示成:P=P·T的形式,其中,P为变换前二维图形的规范化齐次坐标,P为变换后的规范化齐次坐标 ,T为变换矩阵。

8.1 点的变换

8.2 直线的变换

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

九、窗口、视区及变换

9.1 窗口和视区

世界坐标系中要显示的区域(通常在观察坐标系内定义)称为窗口。

窗口映射到显示器(设备)上的区域称为视区。

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

将窗口内的图形在视区中显示出来,必须经过将窗口到视区的变换处理,这种变换就是观察变换。

9.2 观察变换

9.2.1 变焦距效果

当窗口变小时,由于视区大小不变,就可以放大图形对象的某一部分,从而观察到在较大的窗口时未显示出的细节

9.2.2 整体缩放效果

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

9.3 窗口到视区的变换

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

保持比例的性质使得这个映射有线性形式: 其中A、B、C、D是常数