opengl 图形的变换与裁剪
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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 )
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(θ )
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
关于坐标原点的对称变换
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
y
P'
x
z
P
33
三维模型变换
绕任意轴旋转
平移对象,使得旋转轴通过坐标原点 旋转对象使得旋转轴与某一坐标轴重合 绕坐标轴完成指定的旋转 利用逆旋转变换使旋转轴回到其原始方向 利用逆平移使旋转轴回到其原始位置
34
三维造型变换
非线性三维模型变换:变换矩阵是空间位 置(x, y, z)或者旋转角度θ (x, y, z)的函数。
二维显示
坐标系:窗口坐标系、规格化设备坐标系与 屏幕的物理坐标系 变换:设备变换、视窗变换
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
y
P
x
z
P'
31
三维模型变换
绕y轴逆时针旋转θ角的旋转变换Ry (注: θ可以是(x,y,z)的函数)
x′ cosθ ′ y = 0 z ′ − sin θ 1 0 0 sin θ 1 0 0 cosθ 0 0 0 x 0 y 0 z 1 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
刚体变换
可以分解为:平移和旋转的组合 物体的形状没有变化,位置和方位有变化
仿射变换
可以分解为:平移、旋转和放缩的组合 保持点的共线性、长度的比例=>平行线
刚体 变换 仿射 变换
17
复合二维变换(实例)
对任意直线的对称变换(直线方程为 Ax + By + C = 0)
y
?
x
18
o
复合二维变换(实例)
真实的照相机
计算机中的虚拟照相机
23
三维变换的基本概念
场景造型:
场景坐标系:世界坐标系、局部坐标系 变换:造型变换
放置虚拟照相机
坐标系:视点坐标系(虚拟照相机的位置、朝 向以及向上的方向) 变换:取景变换 (在视域四棱锥进行裁剪和背 面剔除 )
24
三维变换的基本概念
投影(照相、摄影):
坐标系:投影坐标系和窗口坐标系 变换:投影变换
cos 2α T = T1 × T2 × T3 × T4 × T5 = sin 2α 0
21
内容
二维变换 三维变换
场景坐标系和造型变换 视点坐标系和取景变换 投影坐标系和投影变换 屏幕坐标系和设备变换
裁剪
22
三维变换的基本概念
三维变换可以看作照相过程模拟,即如何将场 景中的三维几何物体变换到二维屏幕上
35
视点坐标系和取景变换
视点坐标系
视点坐标系定义于世界坐标系中; 其过程类似于拍照片:
照相机镜头的朝向:视线方向 照相机的位置 UP方向
36
视点坐标系的交互建立
坐标原点C=(Cx,Cy,Cz):相机的位置 单位向量N=(Nx,Ny,Nz):镜头的朝向 与N不平行的向量UP:
N × UP V= N × UP
θ1
x
14
复合二维变换
复合缩放变换
S ( s2 x , s2 y ) ⋅ S ( s1x , s1 y ) = S ( s2 x ⋅ s1x , s2 y ⋅ s1 y )
15
复合二维变换
物体的二维变换不具有交换性:二维变换 次序不同一般导致不同的变换结果(举例)
16
复合二维变换
上述变换的组合可以得到特殊的二维变换
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
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
内容
二维变换 三维变换 裁剪
1
内容
二维变换
齐次坐标表示 基本变换 其它变换
三维变换 裁剪
2
二维变换
通过二维变换和裁剪,将定义在二维世界 坐标系中的物体变换到以像素为单位的屏 幕坐标系中,实现二维物体的光栅显示
矢量图形、卡通动画
二维图形中常见的变换
齐次坐标表示: 基本变换:平移、旋转、放缩 其它变换:剪切、对称、复合
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
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
(x, y, z, 1)为世界坐标系中的点 (u, v, n, 1)为视点坐标系中的点
38
投影坐标系和投影变换
投影变换:三维→二维
其中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轴成固定角α的直线
关于直线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
局部坐标系可以简化物体的定义 物体={标准体素,变换}
百度文库
造型变换:
物体从局部坐标系到世界坐标系的变换 三维线性和非线性变换
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
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
复合二维变换
复合二维平移
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
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 )
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
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 ϕ
二维平移
二维点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 )
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(θ )
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
关于坐标原点的对称变换
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
y
P'
x
z
P
33
三维模型变换
绕任意轴旋转
平移对象,使得旋转轴通过坐标原点 旋转对象使得旋转轴与某一坐标轴重合 绕坐标轴完成指定的旋转 利用逆旋转变换使旋转轴回到其原始方向 利用逆平移使旋转轴回到其原始位置
34
三维造型变换
非线性三维模型变换:变换矩阵是空间位 置(x, y, z)或者旋转角度θ (x, y, z)的函数。
二维显示
坐标系:窗口坐标系、规格化设备坐标系与 屏幕的物理坐标系 变换:设备变换、视窗变换
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
y
P
x
z
P'
31
三维模型变换
绕y轴逆时针旋转θ角的旋转变换Ry (注: θ可以是(x,y,z)的函数)
x′ cosθ ′ y = 0 z ′ − sin θ 1 0 0 sin θ 1 0 0 cosθ 0 0 0 x 0 y 0 z 1 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
刚体变换
可以分解为:平移和旋转的组合 物体的形状没有变化,位置和方位有变化
仿射变换
可以分解为:平移、旋转和放缩的组合 保持点的共线性、长度的比例=>平行线
刚体 变换 仿射 变换
17
复合二维变换(实例)
对任意直线的对称变换(直线方程为 Ax + By + C = 0)
y
?
x
18
o
复合二维变换(实例)
真实的照相机
计算机中的虚拟照相机
23
三维变换的基本概念
场景造型:
场景坐标系:世界坐标系、局部坐标系 变换:造型变换
放置虚拟照相机
坐标系:视点坐标系(虚拟照相机的位置、朝 向以及向上的方向) 变换:取景变换 (在视域四棱锥进行裁剪和背 面剔除 )
24
三维变换的基本概念
投影(照相、摄影):
坐标系:投影坐标系和窗口坐标系 变换:投影变换
cos 2α T = T1 × T2 × T3 × T4 × T5 = sin 2α 0
21
内容
二维变换 三维变换
场景坐标系和造型变换 视点坐标系和取景变换 投影坐标系和投影变换 屏幕坐标系和设备变换
裁剪
22
三维变换的基本概念
三维变换可以看作照相过程模拟,即如何将场 景中的三维几何物体变换到二维屏幕上
35
视点坐标系和取景变换
视点坐标系
视点坐标系定义于世界坐标系中; 其过程类似于拍照片:
照相机镜头的朝向:视线方向 照相机的位置 UP方向
36
视点坐标系的交互建立
坐标原点C=(Cx,Cy,Cz):相机的位置 单位向量N=(Nx,Ny,Nz):镜头的朝向 与N不平行的向量UP:
N × UP V= N × UP
θ1
x
14
复合二维变换
复合缩放变换
S ( s2 x , s2 y ) ⋅ S ( s1x , s1 y ) = S ( s2 x ⋅ s1x , s2 y ⋅ s1 y )
15
复合二维变换
物体的二维变换不具有交换性:二维变换 次序不同一般导致不同的变换结果(举例)
16
复合二维变换
上述变换的组合可以得到特殊的二维变换
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
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
内容
二维变换 三维变换 裁剪
1
内容
二维变换
齐次坐标表示 基本变换 其它变换
三维变换 裁剪
2
二维变换
通过二维变换和裁剪,将定义在二维世界 坐标系中的物体变换到以像素为单位的屏 幕坐标系中,实现二维物体的光栅显示
矢量图形、卡通动画
二维图形中常见的变换
齐次坐标表示: 基本变换:平移、旋转、放缩 其它变换:剪切、对称、复合
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
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
(x, y, z, 1)为世界坐标系中的点 (u, v, n, 1)为视点坐标系中的点
38
投影坐标系和投影变换
投影变换:三维→二维
其中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轴成固定角α的直线
关于直线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
局部坐标系可以简化物体的定义 物体={标准体素,变换}
百度文库
造型变换:
物体从局部坐标系到世界坐标系的变换 三维线性和非线性变换
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
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
复合二维变换
复合二维平移
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
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 )
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
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 ϕ