第五章第五章二维变换与裁剪

上传人:E**** 文档编号:91690166 上传时间:2019-07-01 格式:PPT 页数:63 大小:2.71MB
返回 下载 相关 举报
第五章第五章二维变换与裁剪_第1页
第1页 / 共63页
第五章第五章二维变换与裁剪_第2页
第2页 / 共63页
第五章第五章二维变换与裁剪_第3页
第3页 / 共63页
第五章第五章二维变换与裁剪_第4页
第4页 / 共63页
第五章第五章二维变换与裁剪_第5页
第5页 / 共63页
点击查看更多>>
资源描述

《第五章第五章二维变换与裁剪》由会员分享,可在线阅读,更多相关《第五章第五章二维变换与裁剪(63页珍藏版)》请在金锄头文库上搜索。

1、第五章,二维变换与裁剪,齐次坐标 二维几何变换矩阵 Cohen-Sutherland直线段裁剪算法,本章学习目标,5.1 图形几何变换基础 5.2 二维图形基本几何变换矩阵 5.3 二维复合变换 5.4 二维图形裁剪 5.5 Cohen-Sutherland直线裁剪算法 本章小结,本章内容,5.1图形几何变换基础,通过对图形进行几何变换,可以由简单图形构造复杂图形。图形几何变换是对图形进行平移变换、比例变换、旋转变换、反射变换和错切变换。图形几何变换可以分为二维图形几何变换和三维图形几何变换,而二维图形几何变换是三维图形几何变换的基础 。,(a)地砖1 (b)地砖2,图5-1 地板砖类二维场景

2、,二维几何变换示例,齐次坐标就是用n1维矢量表示n维矢量。例如,在二维平面中,点P(x,y)的齐次坐标表示为(wx,wy,w)。类似地,在三维空间中,点P(x,y,z)的齐次坐标表示为(wx,wy,wz,w)。 w1就是规范化的齐次坐标。二维点P(x,y)的规范化齐次坐标为x,y,1,三维点P(x,y,z)的规范化齐次坐标为(x,y,z,1)。 定义了规范化齐次坐标以后,图形几何变换可以表示为图形顶点集合的规范化齐次坐标矩阵与某一变换矩阵相乘的形式。,5.1.1 规范化齐次坐标,对于n3的矩阵A和33的矩阵B,矩阵相乘公式为:,5.1.2 矩阵相乘,(5-1),由线性代数知道,矩阵乘法不满足交

3、换律,只有左矩阵的列数等于右矩阵的行数时,两个矩阵才可以相乘。,用规范化齐次坐标表示的二维基本几何变换矩阵是一个33的方阵,简称为二维变换矩阵。,从功能上可以把二维变换矩阵T分为4个子矩阵。其中,(5-2),5.1.3 二维几何变换矩阵,对图形进行平移变换;,对图形进行投影变换;,对图形进行整体比例变换。,对图形进行比例、旋转、反射和错切变换;,5.1.4 物体变换与坐标变换,同一种变换可以看作是物体变换,也可以看作是坐标变换。物体变换是使用同一变换矩阵作用于物体上的所有顶点,但坐标系位置不发生改变。坐标变换是坐标系发生变换,但物体位置不发生改变,然后在新坐标系下表示物体上的所有顶点。这两种变

4、换紧密联系,各有各的优点,只是变换矩阵略有差异而已,以下主要介绍物体变换。,5.1.5 二维几何变换,(5-3),5.2 二维图形基本几何变换矩阵,二维图形基本几何变换是指相对于坐标原点和坐标轴进行的几何变换,包括平移(Translate)、比例(Scale)、旋转(Rotate)、反射(Reflect)和错切(shear)5种变换。物体变换物体变换是通过变换物体上每一个顶点实现的,因此以点的二维基本几何变换为例讲解二维图形基本几何变换矩阵 。,5.2.1 平移变换矩阵,P,P,平移变换,(5-4),Ty,Tx,Tx,Ty为平移参数,5.2.2 比例变换矩阵,Sx,Sy,P,P,比例变换,Sx

5、,Sy为比例系数,(5-5),5.2.3 旋转变换矩阵,r,P,P,旋转变换,为点的起始角,为点的逆时针方向旋转角,(5-6),5.2.4 反射变换矩阵,P,(a)关于原点反射 (b)关于x轴反射 (c)关于y轴反射 反射变换,关于原点反射的坐标表示为,。,相应的齐次坐标矩阵表示为,关于原点的二维反射变换矩阵为,(5-7),关于x轴的二维反射变换矩阵为,(5-8),关于y轴的二维反射变换矩阵为,(5-9),5.2.5 错切变换矩阵,(a)正方形 (b)沿x正向错切 (c)沿x负向错切,(d)沿y正向错切 (e)沿y负向错切 (f)沿x和y正向错切 错切变换,沿x,y方向的错切变换的坐标表示为,

6、。,相应的齐次坐标矩阵表示为,因此,沿x,y两个方向的二维错切变换矩阵为,其中b、c为错切参数,(5-10),元素大多为零,如果c和b不为零,则意味着对图形进行错切变换。 令b0可以得到沿x方向的错切变换,c0是沿x正向的错切变换,c0是沿y正向的错切变换,b0是沿y负向的错切变换。,在前面的变换中,子矩阵,的非对角线,上面讨论的五种变换给出的都是点变换的公式,对于线框模型,图形的变换实际上都可以通过点变换来完成。例如直线段的变换可以通过对两个顶点坐标进行变换,连接新顶点得到变换后的新直线段;多边形的变换可以通过对每个顶点进行变换,连接新顶点得到变换后的新多边形。曲线的变换可通过变换控制多边形

7、的控制点后,重新绘制曲线来实现。 符合下面形式的坐标变换称为二维仿射变换(Affine Transformation)。,(5-11),仿射变换具有平行线变换成平行线,有限点映射到有限点的一般特性。平移、比例、旋转、反射和错切五种变换都是二维仿射变换的特例,任何一组二维仿射变换总可表示为这5种变换的组合。,5.3 二维复合变换,5.3.1 复合变换原理,5.3.2 相对于任一参考点的二维几何变换,相对于任一参考点的比例变换和旋转变换应表达为复合变换形式,变换方法为首先将参考点平移到坐标原点,对坐标原点进行比例变换和旋转变换,然后再进行反平移将参考点平移回原位置。,其中,T为复合变换矩阵,,为单

8、次基本几何变换矩阵。,例5-1 一个由顶点P1(10,10),P2(30,10)和P3(20,25)所定义的三角形,如图所示,相对于点Q(10,25)逆时针旋转30,求变换后的三角形顶点坐标。,P1,P2,P3,Q,原始图形,平移变换,Q,P3,P2,P1,Q,P3,P2,P1,Q,P3,P2,P1,P1(17.5,12.01),P2(34.82,22.01)和P3(18.66,30),基本旋转变换,复合旋转变换,习题3,5.3.2 相对于任意方向的二维几何变换,相对于任意方向的变换方法是首先对任意方向做旋转变换,使变换方向与坐标轴重合,然后对坐标轴进行二维基本几何变换,最后做反向旋转变换,将

9、任意方向还原到原来的方向。,例5-2 将图示三角形相对于轴线y=kx+b作反射变换,计算每一步的变换矩阵。,y=kx+b,(0,b),原始图形,平移变换,旋转变换,反射变换,反旋转变换,反平移变换,class CTransform/二维几何变换 public: CTransform(); virtual CTransform(); void SetMat(CP2 *,int); void Identity(); void Translate(double,double);/平移变换矩阵 void Scale(double,double);/比例变换矩阵 void Scale(double,do

10、uble,CP2);/相对于任意点的比例变换矩阵 void Rotate(double);/旋转变换矩阵 void Rotate(double,CP2);/相对于任意点的旋转变换矩阵 void ReflectO();/原点反射变换矩阵 void ReflectX();/X轴反射变换矩阵 void ReflectY();/Y轴反射变换矩阵 void Shear(double,double);/错切变换矩阵 void MultiMatrix();/矩阵相乘 public: double T33; CP2 *POld; int num; ;,void CTransform:Identity()/单位

11、矩阵 T00=1.0;T01=0.0;T02=0.0; T10=0.0;T11=1.0;T12=0.0; T20=0.0;T21=0.0;T22=1.0; void CTransform:Translate(double tx,double ty)/平移变换矩阵 Identity(); T20=tx; T21=ty; MultiMatrix(); void CTransform:Scale(double sx,double sy)/比例变换矩阵 Identity(); T00=sx; T11=sy; MultiMatrix(); ,void CTransform:Rotate(double b

12、eta)/旋转变换矩阵 Identity(); double rad=beta*PI/180; T00=cos(rad); T01=sin(rad); T10=-sin(rad);T11=cos(rad); MultiMatrix(); void CTransform:Rotate(double beta,CP2 p)/相对于任意点的旋转变换矩阵 Translate(-p.x,-p.y); Rotate(beta); Translate(p.x,p.y); void CTransform:ReflectO()/原点反射变换矩阵 Identity(); T00=-1; T11=-1; Multi

13、Matrix(); ,void CTransform:ReflectX()/X轴反射变换矩阵 Identity(); T00=1; T11=-1; MultiMatrix(); void CTransform:ReflectY()/Y轴反射变换矩阵 Identity(); T00=-1; T11=1; MultiMatrix(); void CTransform:Shear(double b,double c)/错切变换矩阵 Identity(); T01=b; T10=c; MultiMatrix(); ,void CTransform:MultiMatrix()/矩阵相乘 CP2 *PNe

14、w=new CP2num; for(int i=0;inum;i+) PNewi=POldi; for(int j=0;jnum;j+) POldj.x=PNewj.x*T00+PNewj.y*T10 +PNewj.w*T20; POldj.y=PNewj.x*T01+PNewj.y*T11 +PNewj.w*T21; POldj.w=PNewj.x*T02+PNewj.y*T12 +PNewj.w*T22; delete PNew; ,二维几何变换,5.4 二维图形裁剪,二维直角坐标系 三维右手直角坐标系,描述现实世界中场景的固定坐标系称为世界坐标系,世界坐标系是实数域坐标系,根据应用的需要

15、可以选择直角坐标系、圆柱坐标系、球坐标系以及极坐标系等。,1.世界坐标系,5.4.1 图形学中常用的坐标系,描述物体数学模型的坐标系称为用户坐标系,有时也称为局部坐标系。用户坐标系也是实数域坐标系。用户坐标系是可移动坐标系,用户坐标系的原点可以放在物体的任意位置上,坐标系也可以旋转任意角度。对于立方体,可以将用户坐标系原点放置在立方体中心;对于圆柱,可以将用户坐标系的y轴作为旋转轴。,2.用户坐标系,3.观察坐标系,观察坐标系是在世界坐标系中定义的坐标系,观察坐标系原点位于视点,z轴垂直于屏幕,正向为视线方向。二维观察坐标系主要用于指定图形的输出范围。三维观察坐标系是左手系,用于生成物体的旋转动画。,观察坐标系系,世界坐标系,输出结果,二维观察坐标系,观察坐标系,屏幕坐标系,世界坐标系,三维观察坐标系,4.屏幕坐标系,屏幕坐标系为实数域二维直角坐标系。原点位于屏幕中心,x轴水平向右为正,y轴垂直向上为正。,5.设备坐标系,显示器等图形输出设备自身都带有一个二维

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号