计算机图形学-变换
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章图形变换
反射变换
总结词
反射变换是将图形关于某一平面进行镜像反射的变换。
详细描述
反射变换可以通过指定一个法向量和反射平面来实现。法向量垂直于反射平面,指向反射方向。在二 维空间中,反射变换可以将图形关于x轴或y轴进行镜像反射;在三维空间中,反射变换可以将图形关 于某一平面进行镜像反射。
03
复合图形变换
组合变换
01
02
03
04
组合变换是指将多个基本图形 变换组合在一起,形成一个复
杂的变换过程。
组合变换可以通过将多个变换 矩阵相乘来实现,最终得到一
个复合变换矩阵。
组合变换可以应用于各种图形 变换场景,如旋转、缩放、平
移、倾斜等。
组合变换需要注意变换的顺序 和矩阵的乘法顺序,不同的顺 序可能导致不同的变换结果。
矩阵变换
矩阵变换是指通过矩阵运算对图形进 行变换的方法。
常见的矩阵变换包括平移矩阵、旋转 矩阵、缩放矩阵和倾斜矩阵等。
矩阵变换可以通过将变换矩阵与图形 顶点坐标相乘来实现,得到变换后的 新坐标。
矩阵变换具有数学表达式的简洁性和 可操作性,是计算机图形学中常用的 图形变换方法之一。
仿射变换
仿射变换是指保持图形中点与 点之间的线性关系不变的变换。
05
应用实例
游戏中的图形变换
角色动画
通过图形变换技术,游戏中的角 色可以完成各种复杂的动作,如
跑、跳、攻击等。
场景变换
游戏中的场景可以通过图形变换 技术实现动态的缩放、旋转和平 移,为玩家提供更加丰富的视觉
体验。
特效制作
图形变换技术还可以用于制作游 戏中的特效,如爆炸、火焰、水
流等,提升游戏的视觉效果。
THANKS
计算机图形学之图形变换
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投影变换
将坐标原点平移到点(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 二维图形变换原理及齐次坐标_
为什么要采用齐次坐标?
在笛卡儿坐标系内,向量(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章 变换-几何变换及投影
当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 矩阵基础知识
矩阵的加法运算 数乘矩阵 矩阵的乘法运算 零矩阵运算 单位矩阵 矩阵逆运算 转置运算 矩阵的基本性质
计算机图形学--第八讲 图形的三维几何变换
3
变换通式
空间点[x y z] 的四维齐次坐标 [X Y Z H]表示
三维空间点的变换为 [x y z 1] T = [x’ y’ z’ 1]
变换前点的坐标 三维图形的变换矩阵
变换后点的坐标
三维图形变换矩阵通式为4 x 4 方阵
a b c p
T = d
e
5.关于Y轴对称
特点: y 值不变,zx坐标符号改变
[x y z 1] T = [-x y -z 1]
6.关于Z轴对称
特点: z值不变,xy坐标符号改变
[x y z 1] T = [-x -y z 1]
5.3 图形的三维几何变换—三维基本变换(13)
对称变换示意图
17
5.3 图形的三维几何变换—三维基本变换(14)
(x’, y’, z’)
x = xcos −ysin
y = xsin +ycos
z = z
矩阵运算的表达式为
z
cos sin 0 0
x
y
z 1 = x
y
z
1
−
sin
0
cos
0
0
0
1 0
0
0 0 1
y
(x, y, z)
x
10
5.4 图形的三维几何变换-三维基本变换(7)
绕X轴旋转
与二维图形的组合变换一样, 三维立体图形也可通过 三维基本变换矩阵, 按一定顺序依次相乘而得到一个 组合矩阵(称级联), 完成组合变换。
三维组合平移、组合旋转和组合比例变换与二维组合 平移、组合旋转和组合比例变换具有类似的规律。
19
5.3 图形的三维几何变换—三维复合变换(2)
图形变换(转)
图形变换(转)主要内容:图形处理是CAD/CAM中的关键技术,包括图形⽣成、编辑和图形变换。
计算机图形学计算机图形学的概念计算机图形学的研究内容图形变换点的变换⼆维图形的变换⼆维图形的齐次变换⼆维图形的基本变换复合变换三维图形的齐次变换三维图形的基本变换复合变换1、什么是计算机图形学计算机图形学(Computer Graphics)是近30年来发展迅速、应⽤⼴泛的新兴学科,是计算机科学最活跃的分⽀之⼀。
计算机图形学是研究在计算机中如何表⽰图形,以及利⽤计算机进⾏图形的计算、处理和显⽰的相关原理与算法的⼀门学科。
随着计算机技术的发展,计算机图形学在CAD/CAM等计算机应⽤领域中占有越来越重要的地位。
计算机图形学的研究内容是⼗分丰富的。
虽然许多研究⼯作已经进⾏了多年,取得了不少成果,但随着计算机技术的进步和图形显⽰技术应⽤领域的扩⼤和深⼊,计算机图形学的研究、开发与应⽤还将得到进⼀步的发展。
2、图形变换的概念根据需要将已定义的图形从屏幕的某⼀位置移动到另⼀位置,或改变图形的⼤⼩和形状或利⽤已有的图形⽣成复杂的图形,这种图形处理的⽅法称为图形的⼏何变换,简称图形变换。
图形变换是计算机图形学的核⼼基础,通过图形变换,能够很⽅便地由简单图形派⽣出所需要的图形。
图形变换主要包括⼆维图形和三维图形的⼏何变换,投影变换等。
图形变换通常采⽤矩阵变换的⽅法,图形变换不同,其变换矩阵也不同,本节将重点介绍图形变换的矩阵⽅法及图形变换的程序设计。
2.1 点的变换在计算机绘图中,常常要进⾏诸如⽐例、对称、旋转、平移、投影等各种变换,图形可以⽤点集来表⽰,也就是点集定了,图形也就确定了。
如果点的位置变了,图形也就随之改变。
因此,要对图形进⾏变换,只要变换点就可以了。
由于点集可以⽤矩阵的⽅法来表达,因此对点的变换可以通过相应的矩阵运算来实现,即旧点(集)×变换矩阵矩阵运算新点(集)。
2.2 ⼆维图形变换⼆维图形变换主要包括⽐例,对称、错切、旋转、平移等。
计算机图形学-第三章-变换及裁剪
(x,y)点对应的齐次坐标为三维空间的一条 直线
xh hx
yh
hy
zh h
7
齐次坐标的作用
1. 将各种变换用阶数统一的矩阵来表示。提供了用矩阵 运算把二维、三维甚至高维空间上的一个点从一个坐 标系变换到另一坐标系的有效方法。
2. 便于表示无穷远点。
例如:(x h, y h, h),令h等于0
25
3 规格化设备坐标系 用于用户的图形是定义在用户坐标系里,
而图形的输出定义在设备坐标系里,它依赖于 基体的图形设备。由于不同的图形设备有不同 的设备坐标系,且不同设备间坐标范围也不尽 相同, 例如:分辨率为1024*768的显示器其屏幕坐标的 范围:x方向为0~1023,y方向为0~767,分辨 率为640*480的显示器,其屏幕坐标范围为:x 方向0~639,y方向0~479
y 1),则
1 0 0
P'x' y' 1 x y 1 0 1 0 x
Tx1
Ty1
1
y 1Tt1
经第二次平移变换后的坐标为P*(x* y* 1)
P * x *
y * 1 x'
y'
1
1 0
0 0 1 0
Tx
2
Ty 2
1
1 0 0 1 0 0
x y 1 0 1 0 0 1 0 x y 1 Tt1Tt2
44
关于透视投影
一点透视投影
两点透视投影
三点透视投影
45
内容
二维变换 三维变换 裁剪
二维线裁剪 二维多边形裁剪 文本裁剪 三维裁剪 关于三维变换与裁剪
46
三维变换流程图
图形变换基本概念
图形变换基本概念图形变换是计算机图形学中的一个重要概念,它通过对图形进行特定操作来改变其形状、大小或位置。
图形变换常用于图像处理、动画制作和计算机图形学等领域,对于实现图像变换效果有着重要的作用。
本文将介绍几种常见的图形变换方法及其基本概念。
一、平移变换(Translation)平移变换是一种基本的图形变换方法,它将图形沿着指定的方向进行移动。
平移变换可以通过改变图形中所有点的坐标来实现。
设原始坐标为(x,y),平移变换后的坐标为(x',y'),则有如下公式:x' = x + dxy' = y + dy其中dx和dy分别是水平和垂直方向上的平移量。
通过改变dx和dy的值,可以实现图形的平移。
二、旋转变换(Rotation)旋转变换是将图形绕着指定点旋转一定角度的操作。
旋转变换可以通过改变图形中每个点的坐标来实现。
设原始坐标为(x,y),旋转变换后的坐标为(x',y'),则有如下公式:x' = x*cosθ - y*sinθy' = x*sinθ + y*cosθ其中θ表示旋转的角度。
通过改变θ的值,可以实现图形的旋转。
三、缩放变换(Scaling)缩放变换是将图形按比例进行放大或缩小的操作。
缩放变换可以通过改变图形中每个点的坐标来实现。
设原始坐标为(x,y),缩放变换后的坐标为(x',y'),则有如下公式:x' = x * sxy' = y * sy其中sx和sy分别表示在水平和垂直方向上的缩放比例。
通过改变sx和sy的值,可以实现图形的缩放。
四、错切变换(Shearing)错切变换是将图形在水平或垂直方向上斜向延伸的操作。
错切变换可以通过改变图形中每个点的坐标来实现。
设原始坐标为(x,y),错切变换后的坐标为(x',y'),则有如下公式:x' = x + myy' = nx + y其中n和m分别表示在水平和垂直方向上的错切系数。
计算机图形学-第五章-图形变换
第五章图形变换重点:掌握二维几何变换、二维观察变换、三维几何变换以及三维观察变换。
难点:理解常用的平移、比例、旋转变换,特别是复合变换。
课时安排:授课4学时。
图形变换包括二维几何变换,二维观察变换,三维几何变换和三维观察变换。
为了能使各种几何变换(平移、旋转、比例等)以相同的矩阵形式表示,从而统一使用矩阵乘法运算来实现变换的组合,现都采用齐次坐标系来表示各种变换。
齐次坐标系齐次坐标系:n维空间中的物体可用n+1维齐次坐标空间来表示。
例如二维空间直线ax+by+c=0,在齐次空间成为aX+bY+cW=0,以X、Y和W为三维变量,构成没有常数项的三维平面(因此得名齐次空间)。
点P(x、y)在齐次坐标系中用P(wx,wy,w)表示,其中W是不为零的比例系数。
所以从n维的通常空间到n+1维的齐次空间变换是一到多的变换,而其反变换是多到一的变换。
例如齐次空间点P(X、Y、W) 对应的笛卡尔坐标是x=X/W和y=Y/W。
将通常笛卡尔坐标用齐次坐标表示时,W的值取1。
采用齐次坐标系可以将平移、比例、旋转这三种基本变换都以相同的矩阵形式来表示,并统一地用矩阵乘法来实现变换的组合。
齐次坐标系在三维透视变换中有更重要的作用,它使非线形变换也能采用线形变换的矩阵表示形式。
5.1 二维几何变换二维几何变换就是在平面上对二维点的坐标进行变换,从而形成新的坐标。
二维几何变换主要包括:平移、比例、旋转、对称、错切、仿射和复合变换。
5.1.1 二维平移变换如图所示,它使图形移动位置。
新图p'的每一图元点是原图形p中每个图元点在x和y方向分别移动Tx和Ty产生,所以对应点之间的坐标值满足关系式x'=x+Txy'=y+Ty可利用矩阵形式表示成:[x' y']=[x y]+[Tx Ty]简记为:P'=P+T,T=[Tx Ty]是平移变换矩阵(行向量)。
从矩阵形式来看,平移变换是矩阵加法,而比例和旋转变换则是矩阵乘法。
计算机图形学第讲图形变换详解演示文稿
3
第3页,共46页。
本讲内容
齐次坐标表示法
常见的二维图形几何变换
平移变换 比例变换 旋转变换 对称变换 错切变换
变换矩阵的功能分区 图形的复合变换
4
第4页,共46页。
齐次坐标表示法
将一个原本是n维的向量用一个n+1维向量表示
(x1, x2 ,..., xn )
a
1
0
y
y
ax
1 0 0 1 1 1
➢ 简写为: p = Tp
x
26
第26页,共46页。
本讲内容
齐次坐标表示法 常见的二维图形几何变换
平移变换 比例变换 旋转变换 对称变换 错切变换
变换矩阵的功能分区
图形的复合变换
27
第27页,共46页。
变换矩阵的功能分区
变换矩阵可用3×3矩阵来描述
连续平移变换
得到连续平移变换的复合矩阵T为:
1 0 tx2 1 0 tx1 1 0 tx2 tx1
T T2T1 0
1
t
y
2
0
1
t
y1
0
1
tx
2
t
y1
0 0 1 0 0 1 0 0 1
即连续的平移变换是平移量的相加
37
第37页,共46页。
连续比例变换
设点P(x,y)经过第一次比例变换T1(Sx1,Sy1)和第二次比 例变换T2(Sx2,Sy2)后的坐标为P'' (x'',y'')
y
'
y
Ty
0
1
Ty
y
1 1 0 0 1 1
计算机图形学三维图形变换
主视图变换矩阵
1 0 0 0 1 0 0 0 1 0 0 0
Tv
0 0
0 0
0 1
0
0
0 0
0
0
பைடு நூலகம்
0
0
1 0 0 0
0 0 0 1 0 0
0
0
0
1
0
0 0 1
0
0 0 1
俯视图变换矩阵
1 0 0 0 1
0
0 0 1 0 0 0
TH
0 0
1 0
0 0
0 0 0 0
cos(90) sin(90)
三维图形变换
基本几何变换
基本几何变换都是相对于原点和坐标
轴进行的几何变换,有平移、缩放和 旋转等。在以下的讲述中,均假设用
p(x, y, z) 表示三维空间上一个未被变 换的点,而该点经过某种变换后得到 的新点用 p'(x', y', z') 表示。
平移变换
平移是指将点沿直线路径从一个坐标位置移动 到另一个坐标位置的一个重定位过程。
0 1
0
0
0 0
0 0 0 1 0 0
0
0
0
1
0
0
0
1
0
0 0 1
0 0 0 0 1 0 0 0
0 1 0 0 0 0 0 1
1 0 0 0
0
Rx ( )
0
c
d b
b
d c
0
0
dd
0 0 0 1
Ry ( )
d 0 a 0
Ry
(
)
0
a
1 0
0 d
第七章 图形变换
窗口和视区两者关系
窗口和视区可以是多个 不一定非要矩形,但通常是矩形区域 若要指定一个窗口或视区,只要给出矩形两顶点 的坐标值 观察变换(窗口-视区的坐标变换 窗视变换) 视区的坐标变换, 观察变换(窗口 视区的坐标变换,窗视变换) 窗口(WC)和视区(DC)分别处在不同的坐 标系内,所用的长度单位及大小、位置等均不同 将窗口内的图形在视区中显示出来,必须经过 将窗口到视区的坐标变换处理(视见变换)(观察 变换:世界坐标系=>设备坐标系)
本章基本内容
图形变换的数学基础 窗口视图变换 图形的几何变换 形体的投影变换 三维线段的裁剪
7.1 图形变换的数学基础
点可以用位置向量(矢量 矢量)表示 矢量 二维空间点的坐标可以用行向量[X,Y]或 列向量[X,Y]T 表示 三维空间点的坐标可以用行向量[X,Y,Z] 或列向量表示 用具有一定关系的点的集合(点集 点集)来表示一 点集 个平面图形学基础 窗口视图变换 图形的几何变换 形体的投影变换 三维线段的裁剪
7.2 窗口视图变换
• 世界坐标系 世界坐标系(WC : World Coordinates) • 设备坐标系 • 规格化设备坐标系
1、世界坐标系(WC : World Coordinates) 、世界坐标系
用户定义的图形从窗口到视区的输出过程
从应用程序得到的图形的世界坐标 ↓WC 对窗口进行裁减 ↓NDC 窗口到视区的规格化变换 ↓DC 视区从规格化坐标系到设备坐标系的变换 ↓ 在图形设备上输出图形
从应用 程序得 到图形 的用户 坐标
对窗口区 进行裁剪
窗口区到 视图区的 规格化变换
视图区从规 格化坐标系 到设备坐标 系的变换
1 i i 0 1
视区 viewport
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第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轴的变换