计算机图形学-变换
x' x tx
y'
y
ty'
z' z tz'
x' 1 0 0 tx x
y' z' 1
0 0 0
1 0 0
0 0 0
ty tz 1
y z 1
32
三维旋转
三维空间中,可以绕任意轴旋转一 个对象 其中绕平行坐标轴的旋转是最容易 处理的 三维坐标轴旋转 一般三维旋转
9
二维平移矩阵
x 1 0 tx x y 0 1 ty y 1 0 0 1 1
P T (tx , ty ) P
10
二维旋转矩阵
x cos y sin
1 0
sin cos
0
0 x 0 y 1 1
P R( ) P
11
二维缩放矩阵
x sx 0 0 x y 0 sy 0 y 1 0 0 1 1
15
复合二维旋转
通过两个旋转矩阵相乘,可以证明两个连续的旋 转是相加的。
R(2 ) R(1) R(1 2 )
P R(1 2 ) P
16
复合二维缩放
s2x 0 0 s1x 0 0 s1x s2x
0
0
0 s2 y 0 0 s1y 0 0 s1y s2 y 0
0 0 1 0 0 1 0
21
其他二维变换-反射
产生对象镜像的变换成为反射 对于一个二维反射而言,其反射镜像 通过将对象绕反射轴旋转180度而生成。
22
反射变换
y
1
2
3
2
3 x
1
y
3
1 1
2
3
2
x
23
反射变换
y
3
1 1
3
2
x
2
y
2
3
1 1
2
3
x
24
其他变换-错切
错切是一种使对象形状发生变化的变 换,经过错切的对象好像是由已经相 互滑动的内部夹层组成 两种常用的错切变换是移动x坐标值的 错切和移动y坐标值的错切
P S(sx , sy ) P
12
逆变换
对于平移变换,通过对平移距离取负 值得到逆变换 逆旋转通过用旋转角度的负值取代该 旋转角来实现 将缩放系数用其倒数来取代就得到了 缩放变换的逆矩阵
变换矩阵与其逆矩阵的乘积为单位阵
13
二维复合变换
利用矩阵表达式,可以通过计算单个变换 的矩阵乘积,将任意的变换序列组成复合 变换矩阵 例如,对点位置P进行两次变换:
P M 2 M1 P
MP
14
复合二维平移
1 0 t2x 1 0 t1x 1 0 t1x t2x 0 1 t2 y 0 1 t1y 0 1 t1y t2 y 0 0 1 0 0 1 0 0 1
T (t2x , t2 y ) T (t1x , t1y ) T (t1x2x , t1y2 y )
x x sx
y y sy
也可以写为矩阵形式。
P S P
x y
sx 0
0 sy
x y
或
7
二维缩放
8
矩阵表示和齐次坐标
许多图形应用涉及到几何变换的顺序 需要用一个通式来表示平移、旋转和缩放
P M1 P M 2
将2×2矩阵扩充为3×3矩阵,可以把二维几 何变换的乘法和平移项组合为单一矩阵表示
3
二维平移
y
P
P T
x
通过将位移量加 到一个点的坐标上 来生成一个新的坐 标位置,可以实现 一次平移
P P T
4
二维平移
y
y
x
x
5
二维旋转
y
yr
xr
通过指定一个旋 转轴和一个旋转角 度,可以进行一次 旋转变换。P R Px6
二维缩放
改变一个对象的大小,可以使用缩放变换。
一个简单的二维缩放操作可以通过将缩放系数与 对象坐标位置相乘而得。
0 1 yr sin cos 0 0 1 yr
0 0 1 0
0 1 0 0 1
c os sin
0
sin cos
0
xr (1 cos ) yr sin
yr (1 cos ) xr sin
1
19
通用二维固定点缩放
平移对象使固定点与坐标原点重合 对于坐标原点进行缩放 使用步骤1的反向平移将对象返回到原 始位置
0 1
S (s2x , s2 y ) S (s1x , s1y ) S (s1x s2x , s1y s2 y )
17
通用二维基准点旋转
平移对象使其基准点位置移动到坐标 原点 绕坐标原点旋转 平移对象使其回到原始位置
18
通用二维基准点旋转
1 0 xr cos sin 0 1 0 xr
25
错切变换-移动x坐标值
y
(0,1) (0,0)
y
(1.1)
(1,0)
x
(0,0)
(2,1) (1,0)
(3,1)
x
26
二维坐标系间的变换
计算机图形应用经常需要在场景处理 的各个阶段将对象的描述从一个坐标 系变换到另一个坐标系 在另一些情况下,需要使用非笛卡儿 参考系进行描述 需要使用坐标系间的变换
20
通用二维固定点缩放
1 0 x f sx 0 0 1 0 x f sx 0 x f (1 sx )
0 1 y f 0 sy 0 0 1 y f 0 sy y f (1 sy )
0 0 1 0 0 1 0 0 1 0 0
1
T (x f , y f ) S(sx , sy ) T (x f , y f ) S(x f , y f , sx , sy )
29
三维空间的几何变换
三维几何变换的方法是在二维方法 的基础上考虑了z坐标而得到的。 一个三维位置在齐次坐标中表示为 4元列向量 每一个几何变换操作是一个从左边 去乘坐标向量的4×4矩阵
30
三维平移
y轴
(x, y, z)
(x', y', z') T (tx ,t y ,tz )
z轴
x轴
31
三维平移
27
二维坐标系间的变换
y轴
y轴
x轴
y0
x轴
x0
28
二维坐标系间的变换
考虑从一个二维笛卡儿坐标系到另一 个笛卡儿坐标系的转换 建立把x’y’轴叠加到xy轴的变换
1、将x’y’系统的坐标原点(x0,y0)平移到xy 系统的原点(0,0) 2、将x’轴旋转到x轴上
M xy,x'y' R( ) T (x0 , y0 )
1
第3章 变换
基本的二维几何变换 二维复合变换 其他二维变换 三维几何变换 OpenGL几何变换函数 三维图形的显示流程 投影 裁剪
2
几何变换
应用于对象几何描述并改变它的位置、方 向或大小的操作称为几何变换(geometric transformation) 基本的二维几何变换包括平移、旋转和缩 放