第六章 图形变换
? 内容与要点:
? 矢量(向量),矩阵,
二维平移变换、放缩
变换、旋转变换、错
切变换、对称变换,
齐次坐标,变换的固
定坐标系模式与活动
坐标系模式,世界坐
标系、用户坐标系、
设备(屏幕)坐标系
与局部坐标系,裁剪
窗口与视区,二维图
形的显示流程图,窗
口到视区的变换,三
维平移变换、放缩变
换、旋转变换,坐标系之间的变换。
要点,
1,掌握矢量、矩阵以及它们的运算;
2,掌握二维平移变换、放缩变换、旋转变换、
错切变换及对称变换;
3,掌握变换的两种模式:固定坐标系模式与
活动坐标系模式;
4,掌握坐标系的概念:世界坐标系、用户坐
标系、设备(屏幕)坐标系与局部坐标系;
5,掌握什么是裁剪窗口与视区以及它们各自
的作用;
6,掌握齐次坐标的概念,二维(三维)变换
在其次坐标下的表示;
7,了解二维图形的显示过程,掌握窗口到视
区的变换;
8,掌握三维平移变换、放缩变换、旋转变换;
9,掌握坐标系之间的变换。
6.1变换的数学基础
1,矢量运算,加,减,模运算,点乘,叉
乘等运算;
2,矩阵运算,矩阵的加、减、乘、逆、转
置,求特征值等运算;
6.1.1 矢量运算
加,减,模运算,点乘,叉乘等运算;
矢量,是一有
向线段,具有
方向和大小两
个参数。
说明,CG中常
用的是 2D,3D
中的矢量。
(以 3D中的矢
量为主)
坐标系:
CG坐标系:例子
矢量 的几何意义
? 矢量 的几何
意义,任何一
个矢量可以平移为
从 原点 (0,0,0)出发
到 端点( x,y,z) 的
一个有向线段
? 矢量 的表示
– r=r(x,y,z)
矢量 的运算
1) 矢量的长度
2) 数乘矢量
3) 两个矢量之和
4) 两个矢量的点积
,为两向量之间的夹角。
点积满足交换律和分配律
5) 两个矢量的叉积
叉积满足反交换律和分
配律
设有两个矢量
? V1( x1,y1,z1)
? V2( x2,y2,z2)
矢量 的运算
1) 矢量的长度
2) 数乘矢量
3) 两个矢量之和
4) 两个矢量的点积
为两向量之间的夹角。
点积满足;
– 交换律
– 分配律
5) 两个矢量的叉积
叉积满足:
– 反交换律
– 分配律
矢量 的运算
5) 两个矢量的叉积
叉积满足:
– 反交换律
– 分配律
6.1.2 矩阵运算
1,一个 m行 n列矩阵 A
第 i个行向量:
第 j个列向量:
1) 矩阵的加法运算
1,设两个矩阵 A和 B都是 mxn的,把他们对
应位置的元素相加而得到的矩阵叫做 A、
B的和,记为 A+ B
说明:
两个矩阵
的行数
和列数
都相同
时才能
加法
2) 数乘矩阵
3)矩阵的乘法运算
4) 单位矩阵
5) 矩阵的转置
6) 矩阵的逆
7) 矩阵运算的基本性质
1,矩阵加法适合交换律与结合律
2,数乘矩阵适合分配律与结合律
3,矩阵的乘法适合结合律
4,矩阵的乘法对加法适合分配律
5,矩阵的乘法不适合交换率
6.2 齐次坐标
? 所谓齐次坐标就是将一个原本是 n维的向量用一
个 n+1维向量来表示。
? 例如,2 D中 (x,y)的齐次坐标是 (x,y,1)或 (r*x,r*y,r)
如齐次坐标 [8,4,2],[4,2,1]表示的都是二维点 [2,1]。
? 好处:
– 提供用矩阵运算把二维、三维甚至高维空间中的一个点集从一个
坐标系变换到另一个坐标系的有效方法。
– 它可以表示无穷远的点。 n+1维的齐次坐标中如果 h=0,实际上就
表示了 n维空间的一个无穷远点。对于齐次坐标 [a,b,h],保持 a,b
不变,的过程就表示了在二维坐标系中的一个点沿直线 ax+by=0
逐渐走向无穷远处的过程。
6.3 二维基本变换
? 注意:几何变换都
将采用齐次坐标
? 二维齐次坐标变换
的矩阵的形式是:
对图形进行缩放、
旋转、对称、错
切等变换;
对图形进行平移
变换;
对图形作投影变
换;
对图形整体进行
缩放变换。
1)平移变换
?
2)缩放变换
3)旋转变换
? 二维图形绕原点
旋转 角的变换
形式
? 逆时针旋转
取正值,顺时针
旋转 取负值
6.4 复合变换
? 一个复杂的变换可以分解为若干基本的变换
复杂变换 若干基本的变换
每个基本变
换为一矩阵复杂变换用一个合成矩阵描述 多个基本变换的矩阵的乘积
6.4.1复合平移
两次平移合成相当于一次平移
6.4.2 复合缩放
两次连续的缩放相当于将缩放操作相乘
6.4.3复合旋转
? 两次连续的旋转相当于将两次的旋转角度相加
6.4.4 参考点
? 缩放、旋转变换
都与 参考点 有
关,
? 变换都是以原点
为参考点的。如
果相对某个一般
的参考点( xf,yf)
作缩放、旋转变
换,相当于将该
点先移到坐标原
点处,然后进行
缩放、旋转变换,
最后将( xf,yf)
点移回原来的位
置。
? 注意,(1)复合变换
时,先作用的变
换矩阵在右端,
后作用的变换矩
阵在左端。 (2)变
换的顺序
6.4.5 关于( xf,yf)点的缩放变换
example
6.4.6绕( xf,yf)点的旋转变换
6.4.7对称变换
? ----图形关于一个镜面的反射图形(二维
时镜面为直线),
对称变换其实只
是 a,b,d,e取 0、
1等特殊值产生的
一些特殊效果
对称的情形
? ( 1) 关于 x轴对称,b=d=0,a=1,e=-1,有 x/=x,y/=-y;
? ( 2) 关于 y轴对称,b=d=0,a=-1,e=1,有 x/=-x,y/=y;
? ( 3) 关于原点对称,b=d=0,a=e=-1,有 x/=-x,y/=-y;
? ( 4) 关于直线 y=x对称,b=d=1,a=e=0,有 x/=y,y/=x;
? ( 5) 关于直线 y=-x对称,b=d=-1,a=e=0,有 x/=-y,y/=-x。
? 关于任意直线对称
6.4.8 错切变换
? 图形上某坐标不变(依赖轴),另一坐
标关于不变坐标呈线性变化,
6.4.9仿射变换
? 保持平行关系不变
6.5二维图形的显示流程
现实世界 裁剪 视图 显示
坐标系
1,世界坐标系 (world coordinate):用户在图形对象所在空间定义
2,用户坐标系 (user coordinate):用户按自己的习惯定义
3,局部坐标系 (local coordinate):简化图形对象的描述,相对于
图形定义





世界
坐标
系与
局部
坐标

? 屏幕坐标系 (screen coordinate):屏幕上定

? 设备坐标系 (device coordinate):图形输出
设备上定义
? * 窗口:图形很大,屏幕有限,在世界
坐标系中指定一个矩形区域,用来指定
要显示的图形。
? * 视区:在设备坐标系(屏幕或绘图纸)
上指定的矩形区域,用来指定窗口内的
图形在屏幕上显示的大小及位置
窗口到视区的变换
? 窗口与视区在不同坐标系,须进行变换
6.6 窗口区到视图区的变换
? 实际的窗口区与视图区的大小不一样,
要在视图区正确地显示形体的,必须将
其从窗口区变换到视图区。
变换的求法:分解与合成
? 1) 窗口区的边与坐标轴平行
? 2) 窗口区的边与坐标轴不平行
6.7 三维几何变换
? 三维齐次坐标
? 三维坐标系,右手系
? 三维几何变换矩阵
? * 平移变换
? * 缩放变换
* 绕坐标轴的旋转变换
1,绕 x轴旋转
2,绕 y轴旋转
3,绕 z轴旋转
4,绕任意轴的旋转变换
* 错切变换
* 对称变换
6.7.1 三维齐次坐标
? 由于用齐次坐标表示,三维空间中的
点 (x,y,z)的齐次坐标定义为 (xh,yh,zh,h)(h
为不等于零的任意常数 ),其标准齐次坐
标为 (x,y,z,1).
6.7.2 三维坐标系,右手系
?
6.7.3 三维几何变换矩阵
? 4阶方阵 缩放、旋转、错切等
平移变换 投影变换
整体
的缩
放变

6.7.3.1平移变换
6.7.3.2 缩放变换
? 考虑相对于参
考点( xf,yf,
zf)的缩放变
换,步骤:
? A,将平移到
坐标原点处;
? B,进行缩放
变换;
? C,将参考点
( xf,yf,zf)
移回原来位置
6.7.3.3 绕坐标轴的旋转变换
? 右手坐标系下相对坐标原点绕坐标轴旋
转 q 角的变换,绕 x轴旋转
6.7.3.3 绕坐标轴的旋转变换
? 右手坐标系下相对坐标原点绕坐标轴旋
转 q 角的变换,绕 y轴旋转
6.7.3.3 绕坐标轴的旋转变换
? 右手坐标系下相对坐标原点绕坐标轴旋
转 q 角的变换,绕 z轴旋转
绕任意轴的旋转变换
? 设旋转轴 AB由任意一点 A( xa,ya,za)
及其方向数( a,b,c)定义,空间一点
P( xp,yp,zp)绕 AB轴旋转 角到 P'(xp',
yp',zp'),则:
实现 P点旋转的步骤:
A,将 A点移到坐标原点。
B,使 AB分别绕 X轴,Y轴旋转适当角度
与 Z轴重合。
C,将点 P绕 Z轴旋转 角。
作上述变换的逆操作,使 AB回到原来
位置。
? 各个矩阵的形式参照上面所讲的平移、
选择矩阵,而, 分别是 AB在 YOZ平面
与 XOZ平面的投影与 Z轴的夹角。
错切变换
? z轴为依赖轴,坐标不变,x y坐标依 z坐
标线性变化
对称变换
? (关于 xy平面)
6.8 坐标系变换
? 同一图形对象在不同坐标系中的表示,需
要坐标系之间的变换,即用矩阵将图形从
一个坐标系中变换到另一个坐标系中,
坐标系,OXYZ和 O'UVN,点 O'和单位向量 O'U,O'V,O'N在
OXYZ中的坐标为 (Ox,Oy,Oz),(Ux,Uy,Uz),(Vx,Vy,Vz)、
(Nx,Ny,Nz),现要将坐标系 OXYZ中的图形 变换到 坐标系 O'UVN
中去,记变换为 Mxyz->uvn.由线性代数知识可以求得坐标系之
间的正交变换为,R=
但其中还应有坐标系位置关系的平移变换,即坐标系之间的
变换应为,Mxyz->uvn=R·T(-Ox,-Oy,-Ox).这个变换也可以由
复合变换得到。