当前位置:
文档之家› opengl 图形的变换与裁剪
opengl 图形的变换与裁剪
cos θ R −1 = R(−θ ) = − sin θ 0 sin θ cos θ 0 0 0 1 0 0 1
12
0 1/ sx 1 1 S −1 = S ( , ) = 0 1/ s y sx s y 0 0
复合二维变换
复合二维平移
3
关于齐次坐标
用一个n+1维向量表示一个n维向量
二维点(x,y),用(X,Y,ω)表示: (2,3)的齐次坐标表示可 以是(4,6,2)、(3,4.5,1.5) ω可以任意选取
齐次坐标与普通坐标之间是一一对应关系
x=X/ω y=Y/ω
ω
P
齐次坐标表示点的优势
防止浮点数溢出 矩阵变换的统一表示
X ω=1 平面 Y
局部坐标系可以简化物体的定义 物体={标准体素,变换}
造型变换:
物体从局部坐标系到世界坐标系的变换 三维线性和非线性变换
28
三维模型变换:平移
三维平移T:三维点P(x,y,z)移动(tx,ty,tz)后, 得到点P'(x',y',z')
x′ 1 ′ y = 0 z′ 0 1 0 0 1 0 0 0 t x x 0 t y y 1 t z z 0 1 1
y
P
P'
x
z
32
三维模型变换
绕z轴逆时针旋转θ角的旋转变换Rz (注: θ可以是(x,y,z)的函数)
x′ cosθ ′ y = sin θ z′ 0 1 0 − sin θ cosθ 0 0 0 0 x 0 0 y 1 0 z 0 1 1
二维标系与 屏幕的物理坐标系 变换:设备变换、视窗变换
25
三维变换流程图
局部坐标系
造型变换
世界坐标系
取景变换
视点坐标系
投影变换
图像坐标系
设备变换
规格化设备 坐标系
视窗变换
屏幕坐标系
26
三维变换中的各种坐标系
27
场景坐标系和模型变换
几何场景建立于世界坐标系中 场景中的具体物体与局部坐标系相联系
y
α = arctan(− )
A B
y
α
o
1 0 C / A T1 = 0 1 0 0 0 1
x
o
cos α T2 = − sin α 0 sin α cos α 0
x
0 0 1
19
复合二维变换(实例)
y y y
o
x
o
x
− sin α cos α 0
其中sx和sy分别为x和y分量的放缩比例
x
8
剪切变换(Shear)
沿X-轴方向的剪切变换
Y (x,y) (x',y')
α
X
x′ 1 tgα ′ y = 0 1 1 0 0
0 x 0 y 1 1
(1) 变换过程中, y坐标保持不变,而x坐标值发生线性变化; (2) 平行于X轴的线段变换后仍平行于X轴,平行于Y轴的线段变换 后错切成与Y轴成固定角α的直线
内容
二维变换 三维变换 裁剪
1
内容
二维变换
齐次坐标表示 基本变换 其它变换
三维变换 裁剪
2
二维变换
通过二维变换和裁剪,将定义在二维世界 坐标系中的物体变换到以像素为单位的屏 幕坐标系中,实现二维物体的光栅显示
矢量图形、卡通动画
二维图形中常见的变换
齐次坐标表示: 基本变换:平移、旋转、放缩 其它变换:剪切、对称、复合
关于坐标原点的对称变换
x′ 1 0 0 x ′ y = 0 −1 0 y 1 0 0 1 1
关于X轴的对称变换
10
对称变换
Y y=x (x,y) O X (-y,-x) (y,x)
x′ 0 1 0 x ′ y = 1 0 0 y 1 0 0 1 1
0 x 0 y 1 1
θ ϕ
7
二维缩放
对于进行放缩的变换公式
y
x′ sx ′ y = 0 1 0
0 sy 0
0 x 0 y 1 1
S ( sx , s y )
U = V×N
得到两个向量 U=(Ux,Uy,Uz) 和V=(Vx,Vy,Vz), 然后单位化。
37
视点坐标系的交互建立
四个矢量C、U、V、N组成了视点坐标系 由世界坐标系到视点坐标系的取景变换:
u U x v = Vx n Nx 1 0 Uy Vy Ny 0 Uz Vz Nz 0 0 1 0 0 0 0 1 0 0 1 0 0 0 −C x x 0 −C y y 1 −Cz z 0 1 1
P' T
P
5
二维旋转
将点P(x,y)绕坐标原点按逆时针旋转角θ
x ' = r cos(θ + ϕ ) = r cos ϕ cos θ − r sin ϕ sin θ y ' = r sin(θ + ϕ ) = r cos ϕ sin θ + r sin ϕ cos θ
y
P'
x = r cos ϕ y = r sin ϕ
o
x
−1 0 0 T3 = 0 1 0 0 0 1
cos α T4 = sin α 0
0 0 1
1 0 −C / A T5 = 0 1 0 0 0 1
20
复合二维变换(实例)
y
o
x
sin 2α − cos 2α 0 (cos 2α − 1) * C / A sin 2α * C / A 1
关于直线y=x的对称变换
Y
(x,y)
O
X y=-x
x′ 0 −1 0 x ′ y = −1 0 0 y 1 0 0 1 1
关于直线y=-x的对称变换
11
逆变换
平移变换 旋转变换 缩放变换
1 0 −t x T −1 = T (−t x , −t y ) = 0 1 −t y 0 0 1
30
三维模型变换
绕x轴逆时针旋转θ角的旋转变换Rx’ (注: θ可以是(x,y,z)的函数)
0 x′ 1 ′ y = 0 cosθ z ′ 0 sin θ 1 0 0 0 − sin θ cosθ 0 0 x 0 y 0 z 1 1
9
对称变换
Y (-x,y) (-x,-y) (x,y) X (x,-y)
x′ −1 0 0 x ′ y = 0 1 0 y 1 0 0 1 1
关于Y轴的对称变换
O
x′ −1 0 0 x ′ y = 0 −1 0 y 1 0 0 1 1
4
二维平移
二维点P(x, y)移动(tx, ty)后,得到点P’(x’, y’)
P' = P +T
x′ 1 0 t x x ′ y = 0 1 t y y 1 0 0 1 1
T (t x , t y )
(x, y, z, 1)为世界坐标系中的点 (u, v, n, 1)为视点坐标系中的点
38
投影坐标系和投影变换
投影变换:三维→二维
y
T (t2 x , t2 y ) ⋅ T (t1x , t1 y ) = T (t2 x + t1x , t2 y + t1 y )
P ''
T2
P'
T1 + T2
T1
P
x
13
复合二维变换
复合二维旋转
y
P ''
R(θ 2 ) ⋅ R(θ1 ) = R(θ1 + θ 2 )
θ2
P'
θ1 + θ 2
P
y
x
z
29
三维模型变换:放缩
三维放缩S:三维点P(x,y,z)放缩(sx,sy,sz)后, 得到点P' (x',y',z')
x′ sx ′ y 0 = z′ 0 1 0 0 sy 0 0 0 0 sz 0 0 x 0 y 0 z 1 1
P
θ ϕ
x
x ' = x cos θ − y sin θ y ' = x sin θ + y cos θ
6
二维旋转
将点P(x,y)绕坐标原点按逆时针旋转角θ
y
P'
x′ cosθ ′ y = sin θ 1 0
P
− sin θ cosθ 0
R(θ )
真实的照相机
计算机中的虚拟照相机
23
三维变换的基本概念
场景造型:
场景坐标系:世界坐标系、局部坐标系 变换:造型变换
放置虚拟照相机
坐标系:视点坐标系(虚拟照相机的位置、朝 向以及向上的方向) 变换:取景变换 (在视域四棱锥进行裁剪和背 面剔除 )