1、1,第二章 图形变换,图形变换是计算机图形学基础内容之一。,华中科技大学 华铸CAE中心 name:廖敦明 email:地址:模具国家重点实验室409电话:87558145,2,主要内容 (6学时),一、变换的数学基础 (参见孙家广的书P358) 二、二维几何变换 三、三维几何变换 四、二维观察变换 五、三维观察变换,请参考 伏玉琛 周洞汝 主编计算机图形学-原理方法与应用华中科技大学出版社,伏玉琛 周洞汝 主编 第7、8 、10、11章,3,图形变换的特点线性变换,属性不变,拓扑关系不变。图形变换的作用1. 把用户坐标系与设备坐标系联系起来;2. 可由简单图形生成复杂图形;3. 可用二维图形
2、表示三维形体;4. 动态显示。,4,一、矢量(Vector)、矩阵(Matrix)及运算 1. 矢量的含义 矢量:是由n个实数组成的集合。 如:二维矢量(x,y),三维矢量(x,y,z),(x,y),一、变换的数学基础,5,2. 矢量运算,假定:V1(x1,y1,z1), V2(x2,y2,z2)为两个矢量,则有: 矢量和V1+V2= (x1+x2, y1+y2,z1+z2) 矢量点积V1V2 = x1*x2 + y1*y2 + z1*z2 矢量叉积V1V2 =(y1z2-y2z1, z1x2-z2x1,x1y2-x2y1) 矢量长度|V1| = (V1 V1)1/2 = (x1*x1+y1*
3、y1+z1*z1) 1/2,6,3. 矩阵的含义 矩阵:由mn个数按一定位置排列的一个整体,简称mn矩阵。,A=,其中,aij 称为矩阵A的第 i 行第 j 列元素,7,4. 矩阵运算加法 设A,B为两个具有相同行和列元素的矩阵A+B = 数乘 kA = k*aij|i=1m, j=1,n =,8,乘法 设A为32矩阵,B为23矩阵C = A B = C=Cmp = Am n Bnp cij = aik*bkj,k=1,n,9,单位矩阵在一矩阵中,其主对角线各元素aii=1,其余皆为0的矩阵称为单位矩阵。n阶单位矩阵通常记作InAm n = Am n In,10,逆矩阵若矩阵A存在AA-1=A
4、-1A=I,则称A-1为A的逆矩阵矩阵的转置把矩阵A=(aij)mn的行和列互换而得到的nm矩阵称为A的转置矩阵,记作AT 。(AT) T = A(A+B)T = AT + BT(aA)T = aAT(AB)T = BT AT当A为n阶矩阵,且A=AT ,则 A是对称矩阵。,11,5. 矩阵运算的基本性质 交换律与结合律A+B=B+A;A+(B+C)=(A+B)+C 数乘的分配律及结合律a(A+B) = aA+aB;a(A B) = (aA) B=A (aB)(a+b)A = aA + bAa(bA) = (ab)A,12,矩阵乘法的结合律及分配律A(B C) = (A B)C(A+B) C
5、= A C+ B CC (A+B) = C A + C B矩阵的乘法不适合交换律A B /= B . A,13,1. 平移变换(translation)从点Px,y平移到点Px,yx = x + m y = y + n,二、二维几何变换,14,2 旋转变换,(x,y),(x,y),一个点绕原点的旋转,逆时针方向为正。,15,3 比例变换,P(x,y),P(x,y),x = x*sx y= y*sy,Sx = Sy: 均匀缩放。 Sx = Sy 1,放大 Sx = Sy 1,缩小 Sx 不等于Sy时,沿坐标轴方向伸展和压缩,Y,X,16,4. 对称变换关于X轴的对称变换P(x,y) 对称点为 P
6、(x, -y)关于Y轴的对称变换P(x,y)对称点为P(-x, y)关于坐标原点的对称变换P(x,y) 关于原点的对称点为P(-x,-y),17,1. 齐次坐标齐次坐标就是一个 n 维矢量的(n+1)维矢量表示。例如:二维坐标点P(x,y)的齐次坐标为:( h*x, h*y, h ) 。二维坐标与齐次坐标是一对多的关系。通常都采用规范化的齐次坐标,即取 h=1。(x,y) 的规范化齐次坐标为 (x,y,1)。,变换的矩阵表示,18,齐次坐标的作用:1. 将各种变换用阶数统一的矩阵来表示。提供了用矩阵运算把二维、三维甚至高维空间上的一个点从一个坐标系变换到另一坐标系的有效方法。2. 便于表示无穷
7、远点。,19,二维几何变换的矩阵表示,20,1. 恒等变换2. 比例变换,21,3. 对称变换 关于X轴的对称变换关于Y轴的对称变换,22,关于坐标原点的对称变换,习题:请写出二维错切变换的变换矩阵。,23,5. 旋转变换其矩阵表示为:,(x,y),(x,y),24,6. 平移变换,P(x,y),P(xy),m,n,X,Y,25,(m,n),(x,y),(x, y),(x1,y1),(x2,y2),m,n,1,2,3,(x,y),7. 绕任一点的旋转变换 假定该任一点为P(m,n), 旋转角为,26,T1,T2,T3,27,T =T1 T2 T3 称为矩阵级联,也称复合变换。,28,几何变换的
8、几点说明: (1)平移变换只改变图形的位置,不改变图形的大小和形状。(2)旋转变换仍保持图形各部分间的线性关系和角度关系,直线长度不变。(3)比例变换可改变图形的大小和形状。(4)错切变换引起图形角度关系的改变,设置导致图形发生畸变。(5)拓扑不变的几何变换,不改变图形的连接关系和平行关系。,29,平移变换是指空间上的立体从一个位置移动到另一个位置时,其形状大小均不发生改变的变换。x y z 1 = x+dx y+dy z+dz 1 =,三、三维几何变换,30,轴向比例变换x = axy = ey x y z 1=ax ey jz 1z = jz矩阵表示:,注意:比例变换与参考点有关,31,全
9、比例变换当变换矩阵取下列值时:x y z 1T = x y z s=x/s y/s z/s 1 当s1, 沿三个轴向等比例缩小当0s1, 沿三个轴向等比例放大(轴向比例变换与全比例变换的关系),32,对称变换在二维变换下,对称变换是以线和点为基准,在三维变换下,对称变换则是以面、线、点为基准的。,33,对称于XOY平面x y z 1 = x y -z 1=x y z 1对称于YOZ平面x y z 1 = -x y z 1=x y z 1对称于XOZ平面 x y z 1 = x -y z 1=x y z 1,34,那么,分别对称于X、Y、Z轴和坐标原点的变换矩阵是什么?,35,旋转变换 绕X轴变
10、换空间上的立体绕X轴旋转时,立体上各点的X坐标不变,只是Y、Z坐标发生相应的变化。x= xy= cos(+) = y cos- z sinz= sin(+) = y sin+z cos,X,Y,Z,(y, z),(y, z),Y,Z,O,O,(y, z),(y, z),注意:旋转变换与参考点有关,36,矩阵表示为:,37,绕Y轴旋转此时,Y坐标不变,X,Z坐标相应变化。x= sin(+) = x cos + z siny= yz= cos(+) = z cos- x sin,X,Y,Z,(x, z),(x, z),X,Z,O,O,38,矩阵表示为,39,绕Z轴旋转此时,Z坐标不变,X,Y坐标相
11、应变化。x= cos(+) = x cos y siny= sin (+) = x sin+ y cosz= z,X,Y,Z,(x,y),(xy),X,Y,O,O,40,矩阵表示为:,41,组合变换空间一点绕空间任一轴线的旋转变换。要通过将几个基本的变换组合在一起,得到该组合变换。假定空间任一直线的方向矢量分别为:(l,m,n)并经过原点,42,能否转换成绕X、Y或Z轴旋转的变换?ON绕Z轴旋转2 到XOZ平面上,然后再绕Y轴旋转1,即可与Z轴重合。,O,N,2,1,X,Y,Z,43,这样,可得空间上任一点绕ON轴旋转的变换过程如下:1)首先通过两次旋转,使ON轴与Z轴重合;2)然后使点绕Z轴
12、旋转角;3)最后通过与1)相反的旋转,使ON轴回到原来的位置。假设,绕Z轴的旋转 -2 矩阵为T1绕Y轴的旋转 -1 矩阵为T2绕Z轴的旋转 矩阵为T3绕Y轴的旋转 1 矩阵为T4绕Z轴的旋转 2 矩阵为T5,44,则总体变换矩阵为:T = T1 T2 T3 T4 T5由上推导可看出,只要能求出1 、2的值,即可通过上式获得绕ON轴的变换矩阵。由于矢量 (0 0 1)绕Y轴旋转1 ,再绕Z轴旋转2 即可与ON轴重合。即:,45,l m n 1 = sin1 cos2 sin1sin2 cos1 1l = sin1cos2 m= sin1sin2 n = cos1从而通过上式即可得到1、2 的值
13、。,46,cos1= n sin1=sqrt(l2+m2) cos2= l/sqrt(l2+m2) sin2=m/sqrt(l2+m2),47,问题:当任一轴线的端点不在原点时,此时应如何计算变换矩阵?,48,四、二维观察变换,观察流程 观察参考坐标系 窗口到视区的坐标变换 裁剪操作 点的裁剪 线段的裁剪,49,二维观察流程,建模 变换,观察 变换,视见 变换,工作站变换,MC,WC,VC,NDC,DC,MC-建模坐标系(Modeling Coordinate System)WC-世界坐标系(World Coordinate System)用户坐标系VC-观察坐标系(Viewing Coord
14、inate System)NDC-规范化设备坐标系(Normalized device Coordinate System)DC-设备世界坐标系(Device Coordinate System),50,观察参考坐标系,XY- UV 观察坐标系原点P0,观察矢量VMwc,vc= T . R T-将观察坐标系原点移动到世界坐标系原点 R-将观察坐标系转动到与世界坐标系重合,51,窗口 观察坐标系(或世界坐标系)中要显示的矩形区域 视区 窗口映射到规范化设备坐标系的矩形区域 视见变换 从窗口映射到视区 工作站变换 从规范化设备坐标系到设备坐标系,52,Window,Viewport,Window-
15、Viewport Transformation,观察坐标系,规范化设备坐标系,0,1,1,X,Y,V,U,53,窗口的位置及大小:左下角点为Wc(wx,wy), 长为WL,高为WH; 视区的位置及大小:左下角点Vc(vx,vy),长为VL,高为VH。,窗口到视区的坐标变换,54,可得如下坐标间关系式:,Wc(Wx,Wy),Vc(Vx,Vy),WL,WH,VL,VH,窗口,视区,55,当a!=c时,即x方向的图形变化与y方向不同时,视图区中的图形会发生伸缩变化。注意:当有多窗口、多视区时,要正确选用对应的窗口和视区。,W1,W2,V1,V2,56,二维裁剪,就是在一个图形的整体中,把窗口的内部分
16、和窗口外部分正确地分离开来。边界: 矩形边界 多边形边界 圆和曲线边界 裁剪对象: 点, 线, 区域, 曲线, 文字,57,58,点的裁剪,P(x,y) W(xmin,xmax,ymin,ymax)if ( xmin =x= xmax ) and ( ymin =y= ymax) then display P(x,y),59,线段的裁剪,Cohen-Sutherland 线段裁剪法 梁友栋-Barsky 线段裁剪法,60,线段和窗口的关系,61,该法的基本思想是: 1) 首先判断线段是否完全位于窗口内,如果是,则输出原线段,如果不是,那么再进而判断是否完全位于窗口外,若是,则排除该线段,不输出
17、。2) 如果以上测试都不满足的话,那么就将该线段用窗口边线分割为二段,然后再回到1) 进行上述测试。,编码法(Cohen-Sutherland算法),62,实现方法将窗口边线两边延长,得到九个区域,每一个区域都用一四位二进制数标识,直线的端点都按其所处区域赋予相应的标识码。第一位 1:点处于左边框线的左边(xxr); 第三位 1:点处于下边框线的下边(yyt);,上 下 右 左 1 0 0 1,63,上 下 右 左 1 0 0 1,64,1、如果某线段的两端点的两个四位代码全为零时那么该线段完全位于窗口内; 2、如果两端点的标识码的按位与运算结果不为零,那么该线段必位于窗口外。 3、如果两端点
18、代码都不为零,但code1 & code20时,属于第三种情况,找交点,剪切线段。如果线段被分割,端点有了新的代码,然后再进行上述测试,测试结果是必有一段在窗口之外,可被排除,另一段再重复上述处理过程。如何判定该线段与窗口的哪条边求交呢? 编码中对应位为1的边。,65,梁友栋-Barsky 线段裁剪法,线段的参数表示 x=x1+(x2-x1)u= x1+x.u y=y1+(y2-y1)u= y1+y.u ( 0=0 y=0 称xL为始边, xR为终边yB为始边, yT为终边,属于:参数化裁剪算法(CyrusBeck算法)的特例,66,定义直线的参数化方程为: x = x1 + u xy = y
19、1 + uy 0u1 参数化形式的裁剪条件:XL x1 + ux XRYB y1 + uy YT这四个不等式可以表示为如下形式:u*Qi Di ( i =L,R,B,T) 改写成另一种形式: ti= Di / Qi (i=L,R,B,T),67,交点计算设p1p2与两始边的交点在 u=t0, u=t1与两终边的交点在 u=t2, u=t3 可见段两端点在u=u0, u=u1u0=max(t0,t1,0)u1=min(t2,t3,1) 如果u0u1,则直线位于窗口外,t0,t1,t2,t3,0,1,68,始边和终边的确定及交点计算令 QL= - x DL= x0-xL QR= x DR= xR-
20、x0QB= - y DB= y0-yB QT= y DT= yT-y0交点为 ti= Di / Qi i=L,R,B,TQi 0 ti为与终边交点参数Qi =0 Di 0 时, 分析另一D, 如QL= QR=0 且 DL =0, DR =0 时不必求 ti(因为在垂直方向无交点,与XL、XR无交点),(AB),(CD),C,D,A,B,t0,t1,t2,t3,0,1,69,五、 三维观察变换,三维观察流程 观察坐标系 投影变换 一般情况下三维视图的计算,70,三维观察流程,模型坐标 模型变换 世界坐标 观察变换 观察坐标 投影变换 投影坐标 工作站变换 设备坐标,3D,2D,71,照相的过程,
21、72,观察坐标系的建立,指定观察参考点P该点是观察坐标系的原点。可以位于物体的附近,也可以位于物体的内部。,73,74,指定观察方向N是观察坐标系Z轴的正方向,也是观察平面的法向。两种方法:1. 直接指定一个世界坐标系的向量2. 定义一个观察点,以这个观察点和观察坐标原点的连线为观察方向。,75,指定一个观察向上(view-up)向量V观察坐标系Y轴的方向,76,观察平面,物体投影到观察平面上形成二维场景视图 观察平面平行于XvYv平面 位置由它到观察坐标原点的距离确定。,77,观察变换,观察坐标系右手坐标系左手坐标系,观察坐标系的作用: 1、指定裁剪空间,显示输出范围 2、定义观察平面(投影
22、平面),3D WC 转换 NDC,78,变换顺序,平移观察参考点到世界坐标系原点旋转,使观察坐标系的Xv,Yv,Zv轴和世界坐标系的X,Y,Z轴重合,79,旋转矩阵的直接算法,使用观察坐标系的单位向量 给定向量N和V,计算出各轴的单位向量,80,旋转矩阵,81,投影变换,把三维物体变为二维图形表示的过程称为投影变换。从投影中心引到三维物体上每一点的射线与投影平面的交点,称为物体的投影,A,B,A,B,B,A,A,B,A,B,A,B,透视投影 正平行投影 斜平行投影垂直 不垂直,82,投影变换的种类,A,B,A,B,B,A,A,B,83,平行投影:投影中心与投影面间距离为无穷远; 正平行投影:投
23、影方向和投影面垂直。三视图:三个投影面和坐标轴相互垂直。正轴侧:投影面和坐标轴呈一定的关系。 斜平行投影:投影方向和投影面不垂直。透视投影:投影中心与投影面间距离为有限;,A,B,A,B,B,A,A,B,A,B,A,B,透视投影 正平行投影 斜平行投影垂直 不垂直,84,正平行投影(三视图)工程制图中常用到的三视图,是由空间一物体向三个互相垂直的投影面作正投影得到的。这三个投影面分别称为:正投影面V(ZOX),侧投影面W(YOZ),水平投影面H(XOY)。,V,W,H,V,W,H,X,Y,Z,dz,dx,Z,X,Y,Y,85,正投影视图 正投影是将立体向V面投影得到的,投影结果为: x = x
24、; y=0; z=z 为将点(x y z) 变换为(x y z),只需将点(x y z)作 如下变换即可:,86,侧投影视图 先将立体向W面作正投影(X坐标取为0); 然后绕Z轴旋转90,使与V面处与同一平面; 最后使图形沿X轴负向平移一个距离dx,使正投影和侧投影保持一个距离。,87,水平投影视图 先将立体向H面作正投影,此时Z坐标取0; 然后使水平投影面绕X轴旋转-90,使与正投影面处于同一平面; 最后让图形沿Z轴平移dz的值,使水平投影与正投影拉开一定距离。,88,正轴测投影轴测图是一种简单的立体图形,能给人一种直观的立体形状。由于这种投影的投影平面不与立体的轴线垂直,同时可见到物体的多
25、个面,因而可产生立体效果。经过正轴测投影变换后,物体线间的平行性不变,但角度有变化。,89,正三轴测:沿三个轴线的变形系数不同; 正二轴测:沿二个轴线的变形系数相同; 正轴测: 沿三个轴线具有相同的变形系数。正轴测投影变换矩阵的一般形式:,90,下面主要讨论正二测和正轴测的投影变换矩阵,即确定变换矩阵中的角和角。 如何度量沿三个轴线方向的变形系数呢?X轴上的单位矢量1 0 0 1变换后为:x y z 1 = 1 0 0 1T = cos 0 -sinsin 1Y轴上的单位矢量0 1 0 1变换后为:x y z 1 = 1 0 0 1T = -sin 0 -cossin 1Z轴上的单位矢量0 0
26、 1 1变换后为:x y z 1 = 0 0 1 1T = 0 0 cos 1,91,则三个方向的变形系数分别为:按照正二轴测投影变换的定义有:p = r 假定Y轴上的单位矢量经变换后长度变为1/2; 即取Y轴的变形系数恒为1/2:可得:=20。42, =19 。28。,92,正等轴测变换: 按照正等测投影变换的定义有: p = q = r,93,将和值代入T即可得两种轴测变换的矩阵。,正轴测图的变换矩阵,正二轴测图的变换矩阵,自己推导。,94,透视投影将投影面置于投影中心与投影对象之间的一种投影变换。人眼看物体。,95,假设投影中心在坐标原点,投影面在与Z轴垂直,在Zd的位置上。点P(x,y
27、,z)在投影面上的投影点为P(xp,yp,d)。则xp,yp的值可以计算。 由三角形的相似可得到:,96,令H=z/d,则P点的齐次坐标为(x, y, z, z/d)。,变换矩阵为:,97,透视变换的性质:离视点越远的物体,投影越小。 一束平行于投影面的平行线的投影可保持平行,而不平行于投影面的平行线的投影汇聚到一个点,这个点称为灭点。透视投影的灭点有无限多个,不同方向的平行线在投影面上就能形成不同的灭点。坐标轴方向的平行线在投影面上形成的灭点又称为主灭点。,98,观察窗口,定义在投影平面上一个矩形区域,99,观察体,观察窗口,投影参考点和投影类型共同定义了一个观察体,观察体外的物体被裁剪掉观察体的大小依赖于观察窗口的大小 观察体的形状依赖于选择的投影类型前后有限的,100,平行投影的观察体,101,透视投影的观察体,