1、图形变换 主要介绍?二维几何变换?窗口到视区的变换?三维几何变换 以下几方面的内容:数学基础:矢量、矩阵及运算 二维几何变换 三维几何变换 投影变换 视窗变换 内容 变换的数学基础?矢量 矢量和?zyxuuuU?zyxvvvV?zzyyxxvuvuvuVU变换的数学基础 矢量的数乘 矢量的点积?性质?zyxkukukuUkzzyyxxvuvuvuVU?UVVU?VUVU?000?UUU变换的数学基础 矢量的长度?单位矢量?矢量的夹角 矢量的叉积 222zyxuuuUUU?VUVU?coszyxzyxvvvuuukjiVU?变换的数学基础?矩阵 阶矩阵 n阶方阵 零矩阵 行向量与列向量 单位矩阵
2、 矩阵的加法 矩阵的数乘 矩阵的乘法 矩阵的转置 矩阵的逆 mn?矩阵的含义 矩阵:由mn个数按一定位置排列的一个 整体,简称mn矩阵。?mnmmnnaaaaaaaaa .21222211 1211A=其中,aij称为矩阵A的第i行第j列元素 变换的数学基础 矩阵运算?加法 设A,B为两个具有相同行和列元素的矩阵 A+B=?数乘 kA=k*aij|i=1.m,j=1,.n?.b .b m22111112121111mnmnmmmnnbaababaaba变换的数学基础?乘法 设A为32矩阵,B为23矩阵 C=A B=C=Cmp=Am n Bnp cij=aik*bkj?单位矩阵 在一矩阵中,其主
3、对角线各元素 aii=1,其余皆为0的矩阵称为单位矩阵。n阶单位矩阵通常记作In。Am n=Am n In?babab abababababababababa322322221221312321221121321322121211311321121111 k=1,n 变换的数学基础?逆矩阵 若矩阵A存在AA-1=A-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是对称矩阵。变换的数学基础 矩阵
4、运算的基本性质?交换律与结合律师 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+bA a(bA)=(ab)A 变换的数学基础?矩阵乘法的结合律及分配律 A(B C)=(A B)C (A+B)C=A C+B C C(A+B)=C A+C B?矩阵的乘法不适合交换律 变换的数学基础 所谓齐次坐标表示法就是由n+1维向量表示一个n维向量。如n维向量(P1,P2,Pn)表示为(hP1,hP2,?hPn,h),其中h称为哑坐标。1、h可以取不同的值,所以同一点的齐次坐标不是唯一的。如普通坐标系下的点
5、(2,3)变换为齐次坐标可以是(1,1.5,0.5)(4,6,2)(6,9,3)等等。2、普通坐标与齐次坐标的关系为“一对多”由普通坐标?h齐次坐标 由齐次坐标h普通坐标 3、当h=1时产生的齐次坐标称为“规格化坐标”,因为前 n个坐标就是普通坐标系下的n维坐标。齐次坐标 齐次坐标(x,y)点对应的齐次坐标为 (x,y)点对应的齐次坐标为三维空间的一条直线 (,)xy hhh0,?hhyyhxxhh?hzhyyhxxhhh1.将各种变换用阶数统一的矩阵来表示。提供了用矩阵运算把二维、三维甚至高维空间上的一个点从一个坐标系变换到另一坐标系的有效方法。2.便于表示无穷远点。例如:(x?h,y?h,
6、h),令h等于0 3.齐次坐标变换矩阵形式把直线变换成直线段,平面变换成平面,多边形变换成多边形,多面体变换成多面体。4.变换具有统一表示形式的优点 便于变换合成 便于硬件实现 齐次坐标的作用 窗口视图变换?用户域和窗口区 1 用户域:程序员用来定义草图的整个自然空间(WD)a 人们所要描述的图形均在用户域中定义。b 用户域是一个实数域,理论上是连续无限的。2 窗口区:用户指定的任一区域(W)a 窗口区W小于或等于用户域WD b 小于用户域的窗口区W叫做用户域的子域。c 窗口可以有多种类型,矩形窗口、圆形窗口、多边形窗口等等 d 窗口可以嵌套,即在第一层窗口中可再定义第二层窗口,在第I层窗口中
7、可再定义第I+1层窗口等等。窗口视图变换 1 屏幕域(DC):设备输出图形的最大区域,是有 限 的 整 数 域。如 图 形 显 示 器 分 辨 率 为1024?768DC0.1023?0.767 2 视图区:任何小于或等于屏幕域的区域 a 视图区用设备坐标定义在屏幕域中 b 窗口区显示在视图区,需做窗口区到视图区的坐标转换。c 视图区可以有多种类型:圆形、矩形、多边形等。d 视图区也可以嵌套。窗口区和视图区的坐标变换 设窗口的四条边界WXL,WXR,WYB,WYT 视图的四条边界VXL,VXR,VYB,VYT 则用户坐标系下的点(即窗口内的一点)(Xw,Yw)对应屏幕视图区中的点(Xs,Ys)
8、,其变换公式为?VYBWYBYWYBWYTVYBVYTYVXLWXLXWXLWXRVXLVXRXwsws窗口区和视图区的坐标变换?简化为:?1)当a?c时,即x 方向的变化与y方向的变化不同时,视图中的图形会有伸缩变化,图形变形。?2)当a=c=1,b=d=0则Xs=Xw,Ys=Yw,图形完全相同。?思考:前面讲的窗口视图变换时,假设窗口的边和坐标轴平行,如果窗口的边不和坐标轴平行呢?式)1(?dYcYbXaXwsws窗口区和视图区的坐标变换?A.先让窗口 FGHI转-角,使它和 FGHI重合。?B.用(1)式进行计算。?图形变换是计算机图形学基础内容之一。几何变换,投影变换,视窗变换 线性变
9、换,属性不变,拓扑关系不变。作用:?把用户坐标系与设备坐标系联系起来;?可由简单图形生成复杂图形;?可用二维图形表示三维形体;?动态显示。图形变换 二维图形的显示流程图 图形的几何变换?图形变换:对图形的几何信息经过几何变换后产生新的图形。?图形变换的两种形式:?1.图形不变,坐标系改变;?2.图形改变,坐标系不变。?我们所讨论的是针对坐标系的改变而讲的。二维图形的几何变换?设二维图形变换前坐标为(x,y,1),变换后为(x*,y*,1)?1 二维变换矩阵?注意:T2D可看作三个行向量,其中?1 0 0:表示x 轴上的无穷远点?0 1 0:表示y 轴上的无穷远点?0 0 1:表示原点?ifch
10、ebgdaTD2二维图形的几何变换?从变换功能上可把T2D分为四个子矩阵?体放大。则总体缩小;否则,总若变换。:对整体图形进行伸缩处产生一个灭点。:在处产生一个灭点。:在:对图形做投影变换。:对图形进行平移变换。转、对称、错切等变换:对图形进行缩放、旋,10001000111*11?iiyxyxihxhgxghgfcebda?二维基本变换-平移变换?平移变换?平移变换只改变图形的位置,不改变图形的大小和形状?1101000111*yxyxTyTxTTyxyx?二维基本变换-比例变换 以坐标原点为放缩参照点 当Sx=Sy=1时:恒等比例变换 当Sx=Sy1时:沿x,y方向等比例放大。当Sx=Sy
11、0:图形沿+x方向作错切位移。ABCDA1B1C1D1?当b0:图形沿+y方向作错切位移。ABCD A1B1C1D1?当d0,大拇指指向轴的方向,其它手指指的方向为旋转方向。?1 0 0 00 cos sin-00 sin cos 00 0 0 11 zy x 1 z y?x三维变换矩阵-旋转变换 绕Y轴旋转 此时,Y坐标不变,X,Z坐标相应变化。x=sin(+)=x*cos +z*sin y=y z=cos(+)=z*cos-x*sin X Y Z(x,z)(x z)X Z O O Z 三维变换矩阵-旋转变换?矩阵表示为?1 0 0 0 0 cos 0 sin0 0 1 0 0 sin-0
12、cos1 zy x 1 z y?x三维变换矩阵-旋转变换 绕Z轴旋转 此时,Z坐标不变,X,Y坐标相应变化。x=cos(+)=x*cos -y*sin y=sin(+)=x*sin+y*cos z=z X Y Z(x,y)(x y)X Y O O 三维变换矩阵-旋转变换?矩阵表示为:?1 0 0 0 0 1 0 0 0 0 cos sin-0 0 sin cos1 zy x 1 z y?x绕任意轴的旋转变换-方法1?a)绕过原点的任意轴的旋转变换?空间点P(x,y,z)绕过原点的任意轴ON逆时针旋转角的旋转变换。?基本思想基本思想:因ON轴不是坐标轴,应设法旋转该轴,使之与某一坐标轴重合,然后
13、进行旋转角的变换,最后按逆过程,恢复该轴的原始位置。绕任意轴的旋转变换-方法1?解:令ON为单位长度,其方向余弦为:?、为ON轴与各坐标轴的夹角。?变换过程如下:?1)让ON轴绕z轴旋转-,使之在XOZ平面上。其中 222;cos;cos;coszyxrrzcrybrxa?22sinbab?22cosbaa?绕任意轴的旋转变换-方法1?因此?2)让在XOZ平面上的ON绕y轴旋转-,使之与z轴重合。其中?因此?1000010000cossin00sincos?zR22si nba?c?cos?10000cos0sin00100sin0cos?yR绕任意轴的旋转变换-方法1?3)P点绕ON轴(即z
14、轴)逆时针旋转 角?4)ON轴绕y轴旋转?5)ON轴绕z轴旋转?因此?b)绕任意轴的旋转变换?上 面 的ON轴若 不 过 原 点,而是 过 任 意 点(x0,y0,z0),变换如何呢??zR?yR?zR?zyzyzRRRRRT?绕任意轴的旋转变换-方法2?组合变换:空间一点绕空间任一轴线的旋转变换。要通过将几个基本的变换组合在一起,得到该组合变换。假定空间任一直线的方向矢量分别为:(l,m,n)并经过原点 (l,m,n)(x,y,z)(x,y,z)X Y Z O N 绕任意轴的旋转变换-方法2 能否转换成绕X、Y或Z轴旋转的变换?ON绕Z轴旋转2 到XOZ平面上,然后再绕Y轴旋转1,即可与Z轴
15、重合。O N 2 1 Y Z X 绕任意轴的旋转变换-方法2 这样,可得空间上任一点绕ON轴旋转的变换过程如下:1)首先通过两次旋转,使ON轴与Z轴重合;2)然后使点绕Z轴旋转 角;3)最后通过与1)相反的旋转,使ON轴回 到原来的位置。假设,绕Z轴的旋转-2矩阵为T1 绕Y轴的旋转-1矩阵为T2 绕Z轴的旋转 矩阵为T3 绕Y轴的旋转1矩阵为T4 绕Z轴的旋转2矩阵为T5 绕任意轴的旋转变换-方法2 则总体变换矩阵为:T=T1 T2 T3 T4 T5 由上推导可看出,只要能求出 1、2的值,即可通过上式获得绕ON轴的变换矩阵。由于矢量(0 0 1)绕Y轴旋转1,再绕Z轴旋转2 即可与ON轴重合。即:?1 0 0 0 0 1 0 0 0 0 cos sin-0 0 sin cos 1 0 0 0 0 cos 0 sin0 0 1 0 0 sin-0 cos1 1 0 01n m l22221111?l m n 1=sin1cos2,sin1sin2,cos1,1 l =sin1cos2 m=sin1sin2 n=cos1 从而通过上式即可得到 1、2 的值。问题:当任一轴线的端点不在原点时,此时应如 何计算变换矩阵?绕任意轴的旋转变换-方法2