当前位置:文档之家› 计算机图形学-变换

计算机图形学-变换

1
第3章 变换
基本的二维几何变换 二维复合变换 其他二维变换 三维几何变换 OpenGL几何变换函数 三维图形的显示流程 投影 裁剪
2
几何变换
应用于对象几何描述并改变它的位置、方 向或大小的操作称为几何变换(geometric transformation) 基本的二维几何变换包括平移、旋转和缩 放
8
矩阵表示和齐次坐标
许多图形应用涉及到几何变换的顺序 需要用一个通式来表示平移、旋转和缩放
P M1 P M 2
将2×2矩阵扩充为3×3矩阵,可以把二维几 何变换的乘法和平移项组合为单一矩阵表示
9
二维平移矩阵
x 1 0 t x x y 0 1 t y y 1 0 0 1 1
三维坐标轴旋转
X轴坐标不变,循环替代x、y、z三个 轴可以得到绕x轴旋转的公式
z
y ' y cos z sin
y
z ' y sin z cos x' x
x
35
三维坐标轴旋转
y轴坐标不变,循环替代x、y、z三个 轴可以得到绕y轴旋转的公式
x
z
y
z ' z cos x sin x' z sin x cos y' y
glMatrixMode (GL_MODELVIEW); glColor3f (0.0, 0.0, 1.0); glRecti (50, 100, 200, 150); //显示蓝色矩形
glColor3f (1.0, 0.0, 0.0); glTranslatef (-200.0, -50.0, 0.0); glRecti (50, 100, 200, 150); //显示红色、平移后矩形
17
通用二维基准点旋转
平移对象使其基准点位置移动到坐标 原点 绕坐标原点旋转 平移对象使其回到原始位置
18
通用二维基准点旋转
1 0 0 1 0 0 xr cos yr sin 1 0 sin cos 0 0 1 0 xr 0 0 1 yr 1 0 0 1
sx 0 0 0
0 sy 0 0
0 0 sz 0
(1 s x ) x f (1 s y ) y f (1 s z ) z f 1

47
基本OpenGL几何变换函数
4×4平移矩阵
glTranslate*(tx,ty,tz)
4×4旋转矩阵
glRotate*(theta,vx,vy,vz)
T (t2 x , t2 y ) T (t1x , t1y ) T (t1x2 x , t1y2 y )
15
复合二维旋转
通过两个旋转矩阵相乘,可以证明两个连续的旋 转是相加的。
R( 2 ) R(1 ) R(1 2 )
P R(1 2 ) P
16
复合二维缩放
y
y
(0,1)
(1.1)
(2,1)
(3,1)
(0,0)
(1,0)
x
x
(0,0)
(1,0)
26
二维坐标系间的变换
计算机图形应用经常需要在场景处理 的各个阶段将对象的描述从一个坐标 系变换到另一个坐标系 在另一些情况下,需要使用非笛卡儿 参考系进行描述 需要使用坐标系间的变换
27
二维坐标系间的变换
y轴
s2 x 0 0 0 s2 y 0 0 s1x 0 0 1 0 0 s1 y 0 0 s1x s2 x 0 0 1 0 0 s1 y s2 y 0 0 0 1
S (s2 x , s2 y ) S (s1x , s1y ) S (s1x s2 x , s1y s2 y )
4×4缩放矩阵
glScale*(sx,sy,sz)
48
OpenGL矩阵操作
建模观察模式
glMatrixMode(GL_MODELVIEW);
设定当前矩阵为单位矩阵
glLoadIdentiy();
为当前矩阵的元素赋值
glLoadMatrix*(elements16);
49
OpenGL几何变换编程示例
3
y
2
3
3
3
2
x
2
1
1 2xBiblioteka 123反射变换
y
y
3
3
2
1 1 2
1 1
3
x
2
3
x
2
24
其他变换-错切
错切是一种使对象形状发生变化的变 换,经过错切的对象好像是由已经相 互滑动的内部夹层组成 两种常用的错切变换是移动x坐标值的 错切和移动y坐标值的错切
25
错切变换-移动x坐标值
20
通用二维固定点缩放
1 0 0 1 0 0 x f sx y f 0 1 0 0 sy 0 0 1 0 x f sx 0 0 1 y f 0 1 0 0 1 0 0 sy 0 x f (1 s x ) y f (1 s y ) 1
38
一般三维旋转推导步骤
y
P2
P'2
y
y
P1
P'1
x
x
P' ' 2
P'1
x
z
y
z
y
z
y
P2
P'2
P'1
P' ' 2
x
P'1
P1
x
x
z
z
z
39
一般三维旋转--1
V P2 P ( x2 x1 , y2 y1 , z2 z1 ) 1
V u (a, b, c) V
x2 x1 a V
3
二维平移
通过将位移量加 到一个点的坐标上 来生成一个新的坐 标位置,可以实现 一次平移
x
y
P
T P
P P T
4
二维平移
y
y
x
x
5
二维旋转
y
通过指定一个旋 转轴和一个旋转角 度,可以进行一次 旋转变换。

yr
P R P
x
6
xr
二维缩放
改变一个对象的大小,可以使用缩放变换。
T ( x f , y f ) S (sx , s y ) T (x f , y f ) S ( x f , y f , sx , s y )
21
其他二维变换-反射
产生对象镜像的变换成为反射 对于一个二维反射而言,其反射镜像 通过将对象绕反射轴旋转180度而生成。
22
反射变换
y
1
36
一般三维旋转
对于绕与坐标轴不重合的轴进行旋 转的变换矩阵,可以利用平移与坐 标轴旋转的复合而得到 首先将指定旋转轴经移动和旋转变 换到坐标轴之一,然后对该坐标轴 应用适当的旋转矩阵
最后将旋转轴变回到原来位置
37
一般三维旋转
平移对象使得旋转轴通过坐标原点 旋转对象使得旋转轴与某一坐标轴 重合 绕坐标轴完成指定的旋转 利用逆旋转使旋转轴回到原始方向 利用逆平移使旋转轴回到原始位置
1 0 Rx ( ) 0 0
d 0 Ry ( ) a 0
0 a 1 0 0 d 0 0
0 0 0 0
42
一般三维旋转--4
cos sin Rz ( ) 0 0 sin cos 0 0 0 0 0 1
y2 y1 b V
z2 z1 c V
40
一般三维旋转--2
1 0 T 0 0 0 1 0 0 0 x1 0 y1 1 z1 0 0
41
一般三维旋转--3
y
y
u

x

x
u' '
z
z
0 c d b d 0 0 b d c d 0 0 0 0 1
29
三维空间的几何变换
三维几何变换的方法是在二维方法 的基础上考虑了z坐标而得到的。 一个三维位置在齐次坐标中表示为 4元列向量 每一个几何变换操作是一个从左边 去乘坐标向量的4×4矩阵
30
三维平移
y轴
( x' , y ' , z ' )
T (t x , t y , t z )
(x, y, z)
z轴
x轴
31
三维平移
x' x t x y' y t y ' z' z t z'
x' 1 y' 0 z' 0 1 0
0 1 0 0
0 tx x 0 ty y 0 tz z 1 0 1
cos sin 0
sin cos 0
xr (1 cos ) yr sin yr (1 cos ) xr sin 1
19
通用二维固定点缩放
平移对象使固定点与坐标原点重合 对于坐标原点进行缩放 使用步骤1的反向平移将对象返回到原 始位置
y 轴
x 轴
y0

x0
x轴
28
二维坐标系间的变换
考虑从一个二维笛卡儿坐标系到另一 个笛卡儿坐标系的转换 建立把x’y’轴叠加到xy轴的变换
相关主题