1、五、图形变换与图形剪取算法概念几何变换(二维、三维)计算机图形学中的变换 图象变换线段的矩形窗裁剪多边形的矩形窗裁剪,课程大纲,1. 概念,基本图形变换:几何变换:平移,放缩,旋转,反射,错切投影变换:平行投影,透视投影,计算机图形变换:图例变换:模型坐标系变换到世界坐标系取景变换:世界坐标系变换到观察(参考)坐标系视见变换:观察(参考)坐标系变换到规范化坐标系(三维投影)图象变换:规范化坐标系变换到规范化坐标系,图形显示通过变换实现:不同的显示环境;(显示器,图形窗口,绘图纸等)不同的显示比例;(同一图形窗口下的zoom)不同的观察方向;(从不同的角度观察物体)三维物体的二维表现;,变换:求
2、同一点在不同坐标系下的值。x,y,z = x,y,z*M 这里M为变换矩阵。,性质:图形的方程和点的坐标是依赖于坐标系的选择。 正交变换:将直线变换为直线。,坐标变换公式:是表示同一点对于不同的坐标系的坐标之间的关系; 点变换公式:是表示不同的点对于同的坐标系的坐标之间的关系;(即运动前和运动后的位置)。,五、图形变换概念几何变换(二维、三维)计算机图形学中的变换 图象变换线段的矩形窗裁剪多边形的矩形窗裁剪,课程大纲,2.几何变换(二维、三维),2.1 二维: 列向量表示的点坐标:P= (1)平移:点P平移到点P,设平移距离为tx,ty,则:x = x + txy = y + ty 又设:T=
3、则 P = P + T,X,平移是刚体变换,直线段或多边形的平移可通过每个顶点的平移,再在新位置重画图形得到。 曲线的平移:先平移中心坐标和控制点,再在新位置上重画图形。,(2)缩放:缩放变换改变物体的尺寸。多边形的顶点P乘以缩放系数产生变换的坐标点P,设缩放系数为sx,sy,则:x = x sxy = y sy 又设:S= 则 P = S P,P(x,y),P(x,y),其中:sx为x方向的缩放系数,sy为y方向的缩放系数, 当0=sx,sy=1时,缩小物体, 当1=sx,sy时,放大物体, 若sxsy,则x方向和y方向的缩放比例不同。 上式为相对原点的缩放。,X,Y,sx =2, sy =
4、2的等比例放大图,(3)旋转: 相对坐标原点的旋转:x=xcos- ysiny=xsin+ ycos 又设:R= 则 P = R P,P(x,y),P(x,y),Y,当0时,P点为逆时针旋转, 当0时,P点为顺时针旋转,旋转是刚体变换,直线段或多边形的旋转可通过每个顶点的旋转,再在新位置重画图形得到。 曲线的旋转:先旋转中心坐标和控制点,再在新位置上重画图形。,X,(4) 组合变换: 平移后旋转再平移:P = R (P +T1)+ T2 其中: T1= R=,P(x,y),P(x,y),Y,X,T2=,tx,ty,绕任意点A旋转,平移后缩放再平移:P = S (P+ T1)+ T2 其中: T
5、1= S=,T2=,P(x,y),Y,绕任意点A缩放,X,tx,ty,A,P(x,y),A,同一图形的变换,其每一顶点的变换运算是相同的; 减少运算的有效方法是:求出组合的变换矩阵,再进行顶点的变换。,关键:将平移变换的加转换为乘,由矩阵运算的结合律求出组合的变换矩阵。,引入齐次坐标系: n维空间物体用n+1维空间表示。则: P= 的齐次坐标表示为,平移变换为:,=,即:P = T P,齐次坐标表示平移、缩放、旋转变换,则变换都可用乘法实现。,缩放变换为:,=,即:P = S P,旋转变换为:,=,即:P = R P,绕任意点旋转:P = R (P +T1)+ T2 可表示为:P = T2 R
6、 T1 P,其中: T2 R T1=,绕任意点缩放:P = S (P+ T1)+ T2 可表示为:P = T2 S T1 P,=,其中: T2 S T1=,=,原点为基准点沿指定方向缩放:,Y,绕任意方向缩放,X,s1,s2,先旋转再缩放再旋转:P = R2 S R1 P R2() = R1(- ) R2 = R1-1 可表示为:P = R1-1 S R1 P,=,=,=450 SX=2 SY=1,性质:矩阵运算满足结合律,但不满足交换律。所以,一般地,不同顺序的变换将得到不同的结果。,例:先平移再旋转:,先旋转再平移:,P2(x,y),P(x,y),Y,P1(x,y),P(x,y),Y,P1
7、(x,y),P2(x,y),X,X,以上变换是点变换,即同一坐标系下的不同点的变换。,作业1:写出平移、缩放、旋转的坐标变换, 即同一点在不同坐标系下的变换。,性质:(1) 两个连续的平移(缩放、旋转)可按不同顺序变换,并得到同样位置的图形,即满足交换律。,(2)旋转和等比例缩放(sx=sy)也满足交换律。,(5)反射变换:反射变换产生物体的镜象。,X轴(y=0)为反射轴的变换矩阵:,Y轴(x=0)为反射轴的变换矩阵:,x,y,x,y,Z轴为反射轴的变换矩阵: (相对于坐标原点反射的变换矩阵),x,y,对角线y=x为反射轴的变换矩阵:,x,y,y=x,写出对角线y= -x为反射轴的变换矩阵。,
8、作业2:,任意直线y=mx+b为反射轴的变换矩阵:由平移、旋转、反射的组合变换完成。,(5)错切变换:错切变换改变物体的形状。,相对于X轴的X方向错切的变换矩阵:,错切参数shx=tg ,表示X方向的错切程度。,即:|AA|=y*shx shx的几何意义是y=1的点在错切时在X方向的距离。,相对于Y轴的Y方向错切的变换矩阵:,x = x, y = y + shy*x,即:x = x + shx*y y = y,2.2 三维:列向量表示的点坐标:P=,=,即:P = T P,缩放变换,=,即:P = S P,平移变换,旋转变换,=,绕Z轴的旋转,=,绕X轴的旋转,x,y,z,x,y,z,x,y,
9、z,=,绕Y轴的旋转,变换函数:,translate2(int tx, int ty) scale2(float sx, float sy, wcpt2 refpt) rotate2(float theta, wcpt2 refpt) matrix3x3PreMultiply(Matrix3x3 a, Matrix3x3 b) transformPoints2(int npts, wcpt2 *pts),绕空间任意直线旋转的变换矩阵:T2RX RY RZ RY-1 RX-1 T1,四、图形变换概念几何变换(二维、三维)计算机图形学中的变换 图象变换投影变换:平行投影,透视投影,课程大纲,投影变
10、换:在二维平面上显示三维图形,即空间上的点P(x,y,z)投影变换到平面上的点P(x,y,0)。P = M P 其中:M为投影变换矩阵,两种基本投影:平行投影, 透视投影。,物,物,影,影,平行光,中心射线光,投影变换的三要素:物体,投影平面,投影光;,(1) 平行投影:投影光为平行光。投影图不改变原物体各部分的相对尺寸。,正平行投影:平行光垂直于投影面。 斜平行投影:平行光不垂直于投影面。,正平行投影: 投影方向与坐标轴平行:正面投影(主视图):投影方向与z轴平行。水平投影(俯视图):投影方向与y轴平行。侧面投影(侧视图):投影方向与x轴平行。投影方向不与坐标轴平行-轴测投影:正等轴测投影:
11、投影方向与各坐标轴夹角相等,三个变形系数相等.正二轴测投影:X,Y两个坐标轴方向的变形系数相等。正三轴测投影:三个坐标轴方向上的变形系数各不相等。斜平行投影:投影方向与投影面倾斜(成非90角)。,主视图,俯视图,侧视图,x,y,z,变换矩阵:,主视图:x = xy = yz = 0,俯视图:x = xy = 0z = z,侧视图:x = 0y = yz = z,正等轴测投影:投影方向为立方体的对角线方向,因此三个轴方向的变形因子相同。,M=Ry() Rx() ,投影方向,变换:绕Y轴转角,再绕X轴转角,使得投影方向平行于Z轴,再正投影。,轴测投影,斜平行投影:过空间点(x0,y0,z0)的直线
12、参数方程表示:,x = A t + x0 y = B t + y0 z = C t + z0,t为参数,A,B,C为直线的方向数,(x0,y0,z0),投影方向可用向量A B C表示。,在z=0平面上的斜平行投影满足:z = 0 = C t + z0,即:t = -(z0/C),x = x0 - z0 A/C y = y0 - z0 B/C z = 0,(1) 透视投影:投影光从有限距离的一点发出。投影图改变原物体各部分的相对尺寸,具有“近大远小”的真实效果。,设:投影平面为z=zvp ,投影光在z=zp处。 则有: d = zp -zvp 为投影观察点到观察平面的距离。,zvp,zp,z,(
13、x,y, zvp),P=(x,y,z),观察平面,投影观察点,d,由相似三角形得:x /x = y /y =d/(zp - z),令 w=(zp - z)/d 设: x = w x ; y = w y ; z = w z,则:,x = x d/(zp - z) y = y d/(zp - z) z = zvp,投影面的坐标为:,x = 1/w x y = 1/w y z = zvp,四、图形变换概念几何变换(二维、三维)计算机图形学中的变换 图象变换线段的矩形窗裁剪多边形的矩形窗裁剪,课程大纲,图例变换:模型坐标系 世界坐标系M = T R S 取景变换:世界坐标系 观察参考坐标系M = R
14、T 视见变换:观察参考坐标系 规范化设备坐标系即:窗口 视区M = T2 S T1 显示器变换:规范化设备坐标系 设备坐标系M = S,视见变换(二维),xvmax - xvmin xwmax - xwmin,view,window,(xwmin, ywmin),(xwmax, ywmax),(xvmin, yvmin),(xvmax, yvmax),问题: 1. Sx = Sy 时是什么变换?,2.,不等比例变换,若Sx Sy 时,如何使窗口中的图形不变形地全部出现在视见区中?,增加ywmax, 使得Sy变小(即Sx = Sy),四、图形变换概念几何变换(二维、三维)计算机图形学中的变换 图
15、象变换线段的矩形窗裁剪多边形的矩形窗裁剪,课程大纲,图像变换:(见151页)平移(move):象素点移动。缩放(scale):将缩放的象素区映射到帧缓存的目标区。旋转(rotate):将旋转的象素区映射到帧缓存的目标区, 再计算象素的亮度值选择显示的象素。例:逆时针90度旋转:先行元素颠倒,再行列交换用卷积核处理图像:模糊,锐化,浮雕,水彩3x3的卷积核:是变换图像的一个象素A的九个系数。a11 a12 a13 A1 A2 A3 a21 a22 a23 A4 A A5 a31 a32 a33 A6 A7 A8,1 2 3 4 5 6 7 8 9,3 6 9 2 5 8 1 4 7,变换后的象素
16、A= a11*A1 + a12*A2 + a13*A3a21*A4 + a22*A + a23*A5a31*A6 +a32*A7 + a33*A8,卷积核的系数决定了图像过滤的结果。 模糊:aij1, 且 aij=1 例: 0.08 0.12 0.08 (Blur) 0.12 0.20 0.120.08 0.12 0.08,含义:每个象素都吸收了他周围象素的颜色,但整个图像的亮度保持不变。,卷积核,锐化(Sharpen):a221, 且 1-(a11+a12+a13+a21+a23+a31+a32+a33)=a22,0 -1 0 -1 5 -1 0 -1 0,含义:扩大一个象素与其周围象素颜色
17、间已存在的差异。,卷积核,例:,10 10 10 10 15 12 10 15 15,A = 75-47 = 28,例:,浮雕: aij=0 例: -1 0 0 0 0 00 0 1,含义:背景象素为零,非背景象素不为零。图像中颜色的差异形成了轮廓,不在轮廓上的象素为背景象素(aij=0)。,水彩:1.平滑图像:对每一个象素进行一次取中间值处理,即对一定区域(5*5的象素集)的象素值从小到大排列,取中间值为新的象素值。,2.锐化处理:加重图像的色彩。,10 10 10 10 15 12 10 15 15,A = -10 + 15 = 5,例:,-1和1表示投射到图像上的光的方向,上机作业(课程
18、考核内容,占30%): 1.图形变换: 设计三个图形(三角形, 正方形, 正五边形)循环地绕图形中心点旋转并动态地移动. 2.图像处理:选择一图像文件,用卷积核技术对其实现模糊或锐化或浮雕或水彩处理。 3.用OpenGL或VRML编一个表示三维形体的程序. 3.用图形或图像工具画一个场景. 要求:若独立完成, 可写一个小的程序; 但鼓励多人合作, 程序规模也要略大一些。合作的程序小组人数在2-5人之间。,三次上机内容: 1.学习AutoCAD画图: 画一个房间平面图,学习layer, block, hatch, trim, drawing limit, modify等命令;,2.学习OpenG
19、L编程: 画五个面的房间内部透视图, 学习.,3.学习Director7.0, 制作一个动画: 一个背景, 三个动的角色.,四、图形变换概念几何变换(二维、三维)计算机图形学中的变换 图象变换线段的矩形窗裁剪多边形的矩形窗裁剪,课程大纲,线段的矩形窗裁剪: 1.Cohen-Sutherland线段裁剪算法,三种情况: 1.线段完全保留; code1=0 (code1&code2)0 3.裁剪线段 求交点,问题:最多求几次交点?,线段的矩形窗裁剪: 2. 梁友栋-Barsky线段裁剪算法,线段的参数方程: x = x1 + t*(x2 - x1) 0 = t = 1y = y1 + t*(y2
20、- y1),始边:靠近s1的窗边界线 终边:靠近s2的窗边界线(由t值决定),(s1,s2)的始边: xL yB,终边: xR,yT,对任一线段, 有:当: x2 - x1 = 0 , xL为始边, xR为终边;y2 - y1 = 0 , yB为始边, yT为终边;当: x2 - x1 0 , xR为始边, xL为终边;y2 - y1 0 , yT为始边, yB为终边.,(1),设: t1, t1”为s1,s2与两个始边的交点参数 则: t1 = maxt1, t1”, 0t1为最靠近s2的裁剪点参数,设: t2, t2”为s1,s2与两个终边的交点参数 则: t2 = mint2, t2”,
21、 1t2为最靠近s1的裁剪点参数,当 t1t2 时, x = (x2 - x1)*t + x1 t1 t t2y = (y2 - y1)*t + y1为可见的直线段.,当 t1t2 时, 直线不可见,求t1,t1”,t2,t2”:,xL = (x2 - x1)*t + x1 = xR yB = (y2 - y1)*t + y1 = yT,简化为: t*pk = qk k=1,2,3,4,其中: p1 = -(x2 - x1) q1 = x1 - xLp2 = (x2 - x1) q2 = xR - x1p3 = -(y2 - y1) q3 = y1 - yBp4 = (y2 - y1) q4
22、= yT - y1,与四个窗边界线的交点参数为: tk = qk / pk,若 pk 0, 则 tk为终边之交点参数 若 pk = 0, 当qk0, 则线段完全不可见,由(1)式得:,四、图形变换概念几何变换(二维、三维)计算机图形学中的变换 图象变换线段的矩形窗裁剪多边形的矩形窗裁剪,课程大纲,多边形的矩形窗裁剪:,Sutherland-Hodgman算法: 思想: 用四个窗边界线依次裁剪多边形的所有边。,xL,p1,p2,p3,p4,p5,I1,I2,For(窗边界线:1 to 4) for(多边形的边界线:1 to n)求输出顶点得到裁剪后的顶点序列 ,判断多边形的边界线pi,pi+1与窗边界线L的相交情况:,1. 当pi,pi+1在L的同一侧, 则它们的可见性相同, 且无交点;,2. 当pi,pi+1在L的两侧, 则它们的可见性不相同, 且有交点;,例: 多边形1,2,3,4,5,6,7,8,9,裁剪xL后:1,2,3,4,5,6,7,8,9,裁剪yT后:1,2,I1,I2,4,5,6,7,8,9,裁剪xR后:1,2,I1,I2,I3,I4,6,7,I5,I6,9,裁剪yB后:1,2, I1,I2,I3,I8,I7,7,I5,I6,9,