资源描述:
《计算机图形学课件(C版)-6.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第5章图形几何变换5.1齐次坐标5.2窗口区视图区变换5.3二维图形变换5.4三维图形变换主要教学内容程序员用来定义草图的整个自然空间(WD)用户指定的任一区域(W)b.小于用户域的窗口区W叫做用户域的子域。a.窗口区W小于或等于用户域WDb.用户域是一个实数域,理论上是连续无限的。a.人们所要描述的图形均在用户域中定义。用户域:窗口区:5.2窗口区视图区变换5.2.1窗口区和视图区的概念d.窗口可以嵌套,即在第一层窗口中可再定义第二层窗口,在第I层窗口中可再定义第I+1层窗口等等。c.窗口可以有多种类型,矩形窗口、圆形窗口、多边形窗口等等。视图区:任何小于或等于屏幕域的区域例
2、如:图形显示器分辨率为1024768,屏幕域为?d.视图区也可以嵌套。c.视图区可以有多种类型:圆形、矩形、多边形等。b.窗口区的图形显示在视图区,需进行窗口区到视图区的坐标转换。a.视图区由用户在屏幕域中用设备坐标定义。屏幕域(DC):设备输出图形的最大区域,是有限的整数域。DC[0..1023][0..767]5.2.2窗口区到视图区的坐标变换用户域屏幕域(WXR,WYT)(WXL,WYB)(XW,YW)(VXR,VYT)(VXL,VYB)(XS,YS)XW-WXLXS-VXLYW-WYBYS-VYBWXR-WXLVXR-VXLWYT-WYBVYT-VYB==VXR-V
3、XLWYT-WYB(Xw-WXL)+VXLXs=Ys=VYT-VYBWYT-WYB(Yw-WYB)+VYB窗口区和视图区的坐标变换窗口区和视图区的坐标变换1)当ac时,即x方向的变化与y方向的变化不同时,视图中的图形会有伸缩变化,图形变形。简化为:Xs=a.Xw+bYs=c.Yw+d2)当a=c=1,b=d=0则Xs=Xw,Ys=Yw,图形完全相同。我们可以在同一个图形输出界面上定义多个视图区,用来同时输出不同的图形。(如三视图和轴测图)5.3二维图形变换x*=a.x,y*=d.ya00(x*y*1)=(xy1)0d0001当a=d=1时:物体尺寸不变以坐标原点为缩放参照
4、点(只有原点是保持位置不变的)当ad时:沿x,y方向作非均匀比例变换,图形变形。当a=d<1时:沿x,y方向等比例缩小当a=d>1时:沿x,y方向等比例放大。a和d大于01.比例变换(缩放变换)产生压缩或拉伸的效果。XYa=d=2XYa=1,d=0.5C(4,2)A(1,1)B(3,4)相对坐标原点缩放变换(以坐标原点为缩放中心)。当a=2,d=2时,变换后的各顶点坐标是多少?XY(0,0)C(4,2)A(1,1)B(3,4)相对坐标原点缩放变换。当a=2,d=2时,变换后的各顶点坐标XY(0,0)如果以A(1,1)为缩放中心的缩放变换呢?(1)关于X轴对称:X*=X,Y*=
5、-Y100(X*Y*1)=(XY1)0-10001(2)关于Y轴对称:X*=-X,Y*=Y-100(X*Y*1)=(XY1)0100012.对称(反射、镜像)变换变换的效果完全和平面镜成像一致。(3)关于原点对称:X*=-X,Y*=-Y-100(X*Y*1)=(XY1)0-10001(4)关于Y=X直线对称:X*=Y,Y*=X010(X*Y*1)=(XY1)100001(5)关于Y=-X直线对称:X*=-Y,Y*=-X0-10(X*Y*1)=(XY1)-100001对称变换Y=-XY=XPP的各对称点在哪?1)当b=0(c≠0)时,(x*y*1)=(x+cyy
6、1):沿x方向错切,图形的y坐标不变;x*=x+c.y,y*=b.x+y1b0(x*y*1)=(xy1)c10001当c<0:图形沿-x方向倾斜一个角度。ABCD→A2B2C2D2当c>0:图形沿+x方向倾斜一个角度。ABCD→A1B1C1D13.错切变换c与有何关系?错切变换2)当c=0(b≠0)时,(x*y*1)=(xbx+y1):沿y方向错切,图形的x坐标不变;当b<0:图形沿-y方向错切。ABCD→A2B2C2D2当b>0:图形沿+y方向错切。ABCD→A1B1C1D1001101111011120010001001121131011=P17例2-2OABCCB
7、AOXY错切变换沿哪个方向错切?3)当b0且c0时,(x*y*1)=(x+cybx+y1):图形沿x,y两个方向作错切位移。错切变换错切变换引起图形角度关系的改变,甚至导致图形发生变形。4.旋转变换αθρS(x,y)S’(x´,y´)Ocosøsinø0(x’y’1)=(xy1)-sinøcosø0001如何推导?点S(x,y)绕坐标系原点O逆时针旋转θ角,得到点S’(x’,y’)点S(x,y)绕坐标系原点O顺时针旋转ø角,得到点S’(x’,y’).cosø-sinø0(x’y’1