计算机图形学-变换

合集下载

3D游戏与计算机图形学中的数学方法-变换

3D游戏与计算机图形学中的数学方法-变换

3D游戏与计算机图形学中的数学⽅法-变换1变换在3D游戏的整个开发过程中,通常需要以某种⽅式对⼀系列的向量进⾏变换。

通常⽤到的变换包括平移,缩放和旋转。

1.1通⽤变换通常可将n x n可逆矩阵M看成是⼀个从坐标系到另⼀个坐标系的变换矩阵。

M的列给出了坐标系从原坐标系到新坐标系的映射。

例如M是⼀个n x n可逆矩阵,当M与向量(1,0,0),(0,1,0)和(0,0,1)相乘时,可以得到类似地,M-1的列给出了坐标轴从新坐标轴系到原坐标轴系的映射。

这样对于任意给定的线性⽆关的向量U,V,W可以构造⼀个变换矩阵,该矩阵将这些向量映射到向量(1,0,0),(0,1,0)和(0,0,1)。

多个变换可以串联起来,并且可以将多个变换矩阵的乘积⽤⼀个矩阵来表⽰。

假设需要先⽤矩阵M后⽤矩阵G对⼀个对象进⾏变换,由于乘积满⾜结合律,对于任意向量P都有G(MP)=(GM)P,因此只需存储GM的乘积得到的矩阵,将该矩阵作为对象的变换矩阵即可。

这样就可以对定点进⾏多次变换,⽽存储空间不变。

正交矩阵是⼀种其转置矩阵等于其逆矩阵的矩阵。

正交矩阵只能⽤于表⽰旋转和反射的组合。

反射指在某⼀⽅向上将点进⾏镜像的⼀种运算。

例如,矩阵以xy平⾯为对称⾯对⼀点的z坐标进⾏反射。

⼿向性在三维空间中,有3D向量V1,V2,V3构成的坐标系的基&具有⼿向性。

对于右⼿基,有(V1*V2). V3>0。

也就是说,在⼀个右⼿坐标系中,v1,v2的叉积的⽅向与v3的⽅向形成⼀个锐⾓。

如果&是⼀个正交规范的右⼿基,则有v1*v2=v3。

若(v1*v2).v3<0,那么&是左⼿基。

进⾏奇数次反射操作就会改变⼿向性,偶数次反射相当于⼀次旋转。

通过观察3x3矩阵的⾏列式,就可以判定矩阵是否存在反射。

若M的⾏列式是负的,则存在反射,⽤M对任意基的向量进⾏变换操作后,基的⼿向性都会发⽣改变。

如果⾏列式是正的,那么M不改变⼿向性。

计算机图形学第4章图形变换

计算机图形学第4章图形变换

反射变换
总结词
反射变换是将图形关于某一平面进行镜像反射的变换。
详细描述
反射变换可以通过指定一个法向量和反射平面来实现。法向量垂直于反射平面,指向反射方向。在二 维空间中,反射变换可以将图形关于x轴或y轴进行镜像反射;在三维空间中,反射变换可以将图形关 于某一平面进行镜像反射。
03
复合图形变换
组合变换
01
02
03
04
组合变换是指将多个基本图形 变换组合在一起,形成一个复
杂的变换过程。
组合变换可以通过将多个变换 矩阵相乘来实现,最终得到一
个复合变换矩阵。
组合变换可以应用于各种图形 变换场景,如旋转、缩放、平
移、倾斜等。
组合变换需要注意变换的顺序 和矩阵的乘法顺序,不同的顺 序可能导致不同的变换结果。
矩阵变换
矩阵变换是指通过矩阵运算对图形进 行变换的方法。
常见的矩阵变换包括平移矩阵、旋转 矩阵、缩放矩阵和倾斜矩阵等。
矩阵变换可以通过将变换矩阵与图形 顶点坐标相乘来实现,得到变换后的 新坐标。
矩阵变换具有数学表达式的简洁性和 可操作性,是计算机图形学中常用的 图形变换方法之一。
仿射变换
仿射变换是指保持图形中点与 点之间的线性关系不变的变换。
05
应用实例
游戏中的图形变换
角色动画
通过图形变换技术,游戏中的角 色可以完成各种复杂的动作,如
跑、跳、攻击等。
场景变换
游戏中的场景可以通过图形变换 技术实现动态的缩放、旋转和平 移,为玩家提供更加丰富的视觉
体验。
特效制作
图形变换技术还可以用于制作游 戏中的特效,如爆炸、火焰、水
流等,提升游戏的视觉效果。
THANKS

计算机图形学-变换

计算机图形学-变换
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); //显示红色、平移后矩形

计算机图形学之图形变换

计算机图形学之图形变换

4 T
3
2 p
1
0
012 34 567 8
线段和多边形的平移可以通过顶点的
平移来实现。同样线段和多边形的其它几 何变换也可以通过对顶点的几何变换来实 现。
2. 旋转变换(Rotation) 二维旋转有两个参数:
旋转中心: 旋转角:

6 P’
5
4
3
P
2
1
0
012 34 567 8
设OP与x轴的夹角为 则:
由于采用齐次坐标矩阵表示几何变换, 多个变换的序列相应地可以用矩阵链乘来表 示。
需要注意:先作用的变换其矩阵在右边, 后作用的变换其矩阵在左边。
变换函数
平移变换 void glTanslate{fd}(TYPE x, TYPE y, TYPE z);
旋转变换 void glRotate{fd}(TYPE angle, TYPE x, TYPE y, TYPE z); 绕矢量v=(x,y,z)T逆时针方向旋转angle指定的角度。 旋转角度的范围是0~360度。当angle=0时, glRotate()不起作用。
二维旋转有两个参数: 旋转中心: 旋转角:
上述变换可以分解为三个基本变换:
•平移:
•旋转:
•平移: 回原位。
使旋转中心移到坐标原点; 使旋转中心再移
二维旋转有两个参数: 旋转中心: 旋转角:
因此上述变换可以写成矩阵乘积形式:
4. 5 基本三维几何变换(Basic three-dimensional geometric transformation)
1. 矩阵表示(Matrix representation) 前面三种变换都可以表示为如下的矩
阵形式

计算机图形学13投影变换

计算机图形学13投影变换
将x轴反向与U轴保持一致;
将坐标原点平移到点(a,b)。
01
平行投影
02
俯投影视图 将立体向xoy面作正投影,此时Z坐标取0;
03
投影变换 平行投影
使水平投影面绕X轴旋转-90,使与正投影面处于同一平面; 最后让图形沿Z轴平移dx=tx , dy=ty; 将x轴、y轴反向以与U、V两坐标轴方向一致; 将坐标原点平移至点O
不平行于投影面的平行线的投影会汇聚到一个点,这个点称为灭点(Vanishing Point)。 坐标轴方向的平行线在投影面上形成的灭点称作主灭点。 一点透视有一个主灭点,即投影面与一个坐标轴正交,与另外两个坐标轴平行。 两点透视有两个主灭点,即投影面与两个坐标轴相交,与另一个坐标轴平行。 三点透视有三个主灭点,即投影面与三个坐标轴都相交。
湖北大学 数计学院
1
讨论(续):
2
类似,若主灭点在 Y 轴或 X 轴上,变换矩阵可分别写为:
二点透视投影的变换矩阵
湖北大学 数计学院
在变换矩阵中,第四列的p,q,r起透视变换作用 当p、q、r中有两个不为0时的透视变换称为二点透视变换。假定p!=0, r!=0, q=0; 将空间上一点(x,y,z)进行变换,可得如下结果:
7.4 投影变换 7.4.2 平行投影 斜平行投影求法
知投影方向矢量为(xp,yp,zp)
设形体被投影到XOY平面上
形体上的一点(x,y,z)在xoy平面上投影后→(xs,ys)
∵投影方向矢量为(xp,yp,zp)
∴投影线的参数方程为:
01
03
02
04
05
7.4 投影变换 7.4.2 平行投影 斜平行投影求法 因为 所以 若令
则矩阵式为:

计算机图形学_ 二维图形变换_53 二维图形变换原理及齐次坐标_

计算机图形学_ 二维图形变换_53 二维图形变换原理及齐次坐标_
普通坐标×h→齐次坐标 齐次坐标÷h→普通坐标 当h = 1时产生的齐次坐标称为“规格化坐标”,因为前n个 坐标就是普通坐标系下的n维坐标
为什么要采用齐次坐标?
在笛卡儿坐标系内,向量(x,y)是位于z=0的平面上的点 ;而向量(x,y,1)是位于z=1的等高平面上的点
对于图形来说,没有实质性的差别,但是却给后面矩阵运 算提供了可行性和方便性
假如变换前的点坐标为(x,y),变换后的点坐标为(x*,y* ),这个变换过程可以写成如下矩阵形式:
x*, y*x,
x* a1x b 1 y c1
y•M
x*, y*x
a1
y
1
b 1
c1
a2 b2 c2
上两式是完全等价的。对于向量(x,y,1),可以在几何意义 上理解为是在第三维为常数的平面上的一个二维向量。
这种用三维向量表示二维向量,或者一般而言,用一个n+1维 的向量表示一个n维向量的方法称为齐次坐标表示法
n维向量的变换是在n+1维的空间进行的,变换后的n维结果 是被反投回到感兴趣的特定的维空间内而得到的。
如n维向量(p1,p2,...,pn)表示为(hp1,hp2,...,hpn,h), 其中h称为哑坐标。 普通坐标与齐次坐标的关系为“一对多”:
变换图形就是要变换图形的几何关系,即改变顶点的坐 标;同时,保持图形的原拓扑关系不变
仿射变换(Affine Transformation或 Affine Map)是一 种二维坐标到二维坐标之间的线性变换 (1)“平直性”。即:直线经过变换之后依然是直线
(2)“平行性”。即:平行线依然是平行线,且直线上 点的位置顺序不变)
采用了齐次坐标表示法,就可以统一地把二维线形变换表示 如下式所示的规格化形式:

计算机图形学图形变换

计算机图形学图形变换

(X0,y0)
绕任意点的旋转
1 0 0
• 用矩阵表示各个过程
T1
0
1 0
x 1y 11 xy1 T 1
x0 y0 1
x 2y 21 x 1y 11 T 2
cos T2 sin
sin cos
0 0
x ' y ' 1 x 2 y 21 T 3
0
0 1
1 0 0
x ' y ' 1 x 2 y 21 T 3
cos
sin
0
TT1T2T3 sin
cos
0
x0(1co)sx0siny0co sy0 1
复合矩阵可以减少计算量
• 不进行矩阵合并 往往在屏幕上划定一个平行于设备坐标轴的矩形区域作为图形显示区。
点P(x,y)在X’轴上的投影可用点乘得到, 常用的方法是在图形坐标系中取一个与x轴、y轴平行的矩形窗口,只显示窗口内的图形内容。
计算机图形学图形 变换
二维图形平移
• 二维图形平移是将图形上任 意一点P(x,y)在x轴方向y轴方 向分别平移距离tx,ty,则变 换后的新坐标
x’=x+tx
ty
y’=y+ty
• 用矩阵表示
1 [x',y'][x,y]0
1 0tx,ty
P’ p
tx
二维图形旋转
• 二维图形旋转是将图形绕圆
点旋转。图形上任意一点
2. 3次变换需要3×9=27次乘法。 这不仅可以节省运算量,还可以明确一个矩阵代表一种变换的概念。
Y’轴的单位方向矢量为(a21,a22) 这不仅可以节省运算量,还可以明确一个矩阵代表一种变换的概念。 复合矩阵可以减少计算量 我们希望将一种变换用一个矩阵来表示,这样就可以用矩阵合并的方法将一系列的简单变换用一个复杂变换来表示。 有时采用活动坐标系模式,是为了更好地理解变换前后两个对应物体之间的坐标关系。 表示变换前的模型上任意一点 仿射变换的特点是变换前的平行线在变换后依然平行。 变换图形、变换关系式和变换矩阵 合并矩阵与一个点向量相乘得到一个点向量,需要9次乘法。 固定坐标系模式:坐标系不变、图形变动。

9-10讲 第4章 变换-几何变换及投影

9-10讲 第4章 变换-几何变换及投影
Yv = c ⋅ Yw + d
当a≠c时,即x 方向的变化与y方向的变化不同时, ≠ 时 方向的变化与 方向的变化不同时, 方向的变化不同时 视图中的图形会有伸缩变化,图形变形。 视图中的图形会有伸缩变化,图形变形。 当 a=c=1, b=d=0则 Xv=Xw,Yv=Yw, 图形完全相同 。 , 则 = , = , 图形完全相同。
14
4.2.3 窗口区和视图区的坐标变换
2. 变换过程 窗口-视图二维变换 窗口 视图二维变换
从应用程序得到 图形的用户坐标 对窗口区域 进行裁剪 窗口至视 区的变换 显示或 绘图
窗口-视图三维变换 窗口 视图三维变换
从应用程序得到图 形的三维用户坐标 投影 对窗口区 域裁剪 窗口至视 区的变换 显示或 绘图
16
4.3.1 齐次坐标
齐次坐标表示法: 维向量表示一个n维向量 齐次坐标表示法 用n+1维向量表示一个 维向量 维向量表示一个 (x,y)点对应的齐次坐标为 其中x 问题1:点对应的齐次坐标为(x 空间中的一点, 非齐次坐标表示方式唯一吗? 问题 点对应的齐次坐标为 h,yh,h), 其中 h=hx, yh=hy, 空间中的一点 非齐次坐标表示方式唯一吗 h≠0. 因此,普通坐标与齐次坐标的关系为“一对多” ? 因此,,(x,y)点对应的齐次坐标为三维空间的一条直 问题2: 空间中的一点 其齐次坐标表示方式唯一吗 问题 普通坐标与齐次坐标的关系为“一对多” 这样, 这样 空间中的一点, 其齐次坐标表示方式唯一吗? 点对应的齐次坐标为三维空间的一条直
y2 z2
5
4.1 变换的数学基础
4.1.2 矩阵基础知识
矩阵的加法运算 数乘矩阵 矩阵的乘法运算 零矩阵运算 单位矩阵 矩阵逆运算 转置运算 矩阵的基本性质
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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) 基本的二维几何变换包括平移、旋转和缩 放
相关文档
最新文档