1、图形变换是计算机图形学基础内容之一
- 几何变换,投影变换,视窗变换
- 线性变换,属性不变,拓扑关系不变。
- 作用:
- 把用户坐标系与设备坐标系联系起来;
- 可由简单图形生成复杂图形;
- 可用二维图形表示三维形体;
- 动态显示。
2、图形的几何变换
- 几何变换:图形的几何信息经过几何变换后产生新的图形。
- 几何变换的两种形式:
- 图形不变,坐标系改变;
- 图形改变,坐标系不变;
3、二维图形变换
-
(1)、平移变换
- 从点P[x,y]平移到点P’[x’,y’]
- x’ = x + m
- y’ = y + n
- 从点P[x,y]平移到点P’[x’,y’]
-
(2)、旋转变换
- 一个点绕原点的旋转,逆时针旋转为正。
- 一个点绕原点的旋转,逆时针旋转为正。
-
(3)、比例变换
X’ = X * Sx
Y’ = Y * Sy
Sx = Sy: 均匀缩放。
Sx = Sy > 1,放大
Sx = Sy < 1,缩小
Sx 不等于 Sy时,沿坐标轴方向伸展和压缩
-
(4)、对称变换
- 关于X轴的对称变换
P(x,y) 对称点为 P’(x, -y) - 关于Y轴的对称变换
P(x,y)对称点为P’(-x, y) - 关于坐标原点的对称变换
P(x,y) 关于原点的对称点为P’(-x,-y)
- 关于X轴的对称变换
-
(5)、错切变换
- 沿x方向产生错切
x’ = x + y*tag(θ)
y’ = y
- 沿y方向产生错切
x’ = x
y’ = y +x * tag(θ)
- 沿x方向产生错切
4、二维图形变换的矩阵表示
- (1)、齐次坐标
- 齐次坐标就是一个n维矢量的(n+1)维矢量表示。例如:二维坐标点P(X,Y)的齐次坐标为:(HX, HY, H)。
- 二维坐标与齐次坐标是一对多的关系。通常都采用规格化的齐次坐标表示,即:H=1。P(X,Y)的规格化齐次坐标为 P(X,Y,1)。
- 齐次坐标的几何意义:可理解为三维空间上的第三维为常数的一个平面上的二维向量。
5、齐次坐标的作用
- (1)、将各种变换用阶数统一的矩阵来表示。提供了用矩阵运算来实现图形变换,或者把二维、三维甚至高维空间上的一个点从一个坐标系变换到另一个坐标系的有效方法。
- (2)、便于表示无穷远点。例如:(XH, YH, H),令H=0。
6、齐次坐标与二维变换的矩阵表示
- (1)、恒等变换
- (2)、比例变换
- (3)、对称变换
- 关于X轴的对称变换
- 关于Y轴的对称变换
- 关于坐标原点的对称变换
- 关于X轴的对称变换
- (4)、旋转变换
- 其矩阵表示为
- (5)、平移变换
- (6)、绕任意一点的旋转变换
假定该任一点为P(m,n),旋转角为θ
变换过程如下:
T=T1 T2 T3 成为矩阵级联,也称复合变换。
7、复合变换及变换模式
- (1)、问题:如何实现复杂变换?
- (2)、关于任意参照点Pr (xr, yr)的旋转变换
- (3)、关于任意参照点Pr (xr, yr)的缩放变换
- (4)、变换的结果与变换的顺序有关(矩阵乘法不可交换)
-
(5)、变换的固定坐标系模式
- 相对于同一个固定坐标系
- 先调用的变换先执行,后调用的变换后执行
-
(6)、特别注意
- 求变换矩阵是要明确变换模型
- 左乘
- 右乘
- 采用变换矩阵左乘的图形系统一般用堆栈实现
- 先调用的变换后执行,后调用的变换先执行
- 求变换矩阵是要明确变换模型
8、三维几何变换
-
(1)、三维变换矩阵
-
(2)、三维基本变换
-
轴向比例变换
x’ = ax y’ = ey [x‘ y’ z‘ 1]=[ax ey jz 1] z’ = jz
矩阵表示:
-
全比例变换
当变换矩阵取下列值时:
-
[x y z 1]T = [x y z s]=[x/s y/s z/s 1]
当s>1, 沿三个轴向等比例缩小
当0<s<1, 沿三个轴向等比例放大
(轴向比例变换与全比例变换的关系)
-
对称变换
在二维变换下,对称变换是以线和点为基准,在三维变换下,对称变换则是以面、线、点为基准的。
-
对称于XOY平面
[x’ y’ z’ 1] = [x y -z 1]=[x y z 1] -
对称于YOZ平面
[x’ y’ z’ 1] = [-x y z 1]=[x y z 1] -
对称于XOZ平面
[x’ y’ z’ 1] = [x -y z 1]=[x y z 1]
- 那么,分别对称与X、Y、Z轴和坐标原点的变换矩阵是什么?
-
-
平移变换
是指空间上的立体从一个位置移动到另一个位置时,其形状大小均不发生改变的变换。
[x’ y’ z’ 1] = [ x+dx y+dy z+dz 1] =
-
旋转变换
-
绕X轴旋转
空间上的立体绕X轴旋转时,立体上各点的X坐标不变,只是Y、Z坐标发生相应的变化。
-
x’= x
y’= ρcos(α+θ) = y*cosθ- z*sinθ
z’= ρsin(α+θ) = y*sinθ+z*cosθ
矩阵表示为:
+ 绕Y轴旋转
此时Y坐标不变,X、Z坐标相应变换。
x’= ρsin(α+θ) = x*cosθ + z*sinθ
y’= y
z’= ρcos(α+θ) = z*cosθ- x*sinθ
矩阵表示为:
+ 绕Z轴旋转
此时Z坐标不变,X、Y坐标相应变换。
x’= ρcos(α+θ) = x*cosθ - y*sinθ
y’= ρsin (α+θ) = x*sinθ+ y*cosθ
z’= z
矩阵表示为:
- 组合变换
空间一点绕空间任一轴线的旋转变换。要通过将几个基本的变换组合在一起,得到该组合变换。
假定空间任一直线的方向矢量分别为:(l,m,n)并经过原点
能否转换成绕X、Y或Z轴旋转的变换?
ON绕Z轴旋转θ2 到XOZ平面上,然后再绕Y轴旋转θ1,即可与Z轴重合。
这样,可得空间上任一点绕ON轴旋转的变换过程如下:
1)首先通过两次旋转,使ON轴与Z轴重合;
2)然后使点绕Z轴旋转θ角;
3)最后通过与1)相反的旋转,使ON轴回
到原来的位置。
假设,绕Z轴的旋转-θ2矩阵为T1
绕Y轴的旋转-θ1矩阵为T2
绕Z轴的旋转θ矩阵为T3
绕Y轴的旋转θ1矩阵为T4
绕Z轴的旋转θ2矩阵为T5
则总体变换矩阵为:
T = T1 T2 T3 T4 T5
由上推导可看出,只要能求出θ1 、θ2的值,即可通过上式获得绕ON轴的变换矩阵。
由于矢量 (0 0 1)绕Y轴旋转θ1 ,再绕Z轴旋转θ2 即可与ON轴重合。即:
[l m n 1] = [sinθ1 cosθ2 sinθ1sinθ2 cosθ1 1]
l = sinθ1cosθ2
m= sinθ1sinθ2
n = cosθ1
从而通过上式即可得到θ1、θ2 的值。
问题:当任一轴线的端点不在原点时,此时应如
何计算变换矩阵?
9、绕任意轴的旋转变换
-
(1)、 基本思想
因任意轴不是坐标轴,应设法旋转该轴,使之与某一坐标轴重合,然后进行旋转θ角的变换,最后按逆过程,恢复该轴的原始位置。