网站大量收购独家精品文档,联系QQ:2885784924

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

  1. 1、本文档共72页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第五章 二维变换与裁剪

第五章;齐次坐标 二维几何变换矩阵 Cohen-Sutherland直线段裁剪算法 中点分割直线段裁剪算法 Liang-Barsky直线段裁剪算法 Sutherland-Hodgman多边形裁剪算法;5.1 图形几何变换基础 5.2 二维图形基本几何变换矩阵 5.3 二维复合变换 5.4 二维图形裁剪 5.5 Cohen-Sutherland直线裁剪算法 5.6 中点分割直线段裁剪算法 5.7 梁友栋-Barsky直线段裁剪算法 5.8 多边形裁剪 5.9 本章小结 习题 5;5.1图形几何变换基础; 齐次坐标就是用n+1维矢量表示n维矢量。例如,在二维平面中,点P(x,y)的齐次坐标表示为(wx,wy,w)。类似地,在三维空间中,点P(x,y,z)的齐次坐标表示为(wx,wy,wz,w)。 w=1就是规范化的齐次坐标。二维点P(x,y)的规范化齐次坐标为〔x,y,1〕,三维点P(x,y,z)的规范化齐次坐标为(x,y,z,1)。 定义了规范化齐次坐标以后,图形几何变换可以表示为图形顶点集合的规范化齐次坐标矩阵与某一变换矩阵相乘的形式。;对于n×3的矩阵A和3×3的矩阵B,矩阵相乘公式为:; 用规范化齐次坐标表示的二维基本几何变换矩阵是一个3×3的方阵,简称为二维变换矩阵。;5.1.4 物体变换与坐标变换 ;5.2 二维图形基本几何变换矩阵 ;5.2.1 平移变换矩阵 ;5.2.2 比例变换矩阵 ;5.2.3 旋转变换矩阵 ;5.2.4 反射变换矩阵 ;关于原点的二维反射变换矩阵为 ;5.2.5 错切变换矩阵 ;沿x,y方向的错切变换的坐标表示为;元素大多为零,如果c和b不为零,则意味着对图形进行错切变换。 令b=0可以得到沿x方向的错切变换,c0是沿x正向的错切变换,c0是沿x负向的错切变换。 令c=0可以得到沿y方向的错切变换,b0是沿y正向的错切变换,b0是沿y负向的错切变换。; 上面讨论的五种变换给出的都是点变换的公式,对于线框模型,图形的变换实际上都可以通过点变换来完成。例如直线段的变换可以通过对两个顶点坐标进行变换,连接新顶点得到变换后的新直线段;多边形的变换可以通过对每个顶点进行变换,连接新顶点得到变换后的新多边形。曲线的变换可通过变换控制多边形的控制点后,重新绘制曲线来实现。 符合下面形式的坐标变换称为二维仿射变换(Affine Transformation)。 ;5.3 二维复合变换 ; 例5-1 一个由顶点P1(10,10),P2(30,10)和P3(20,25)所定义的三角形,如图所示,相对于点Q(10,25)逆时针旋转30°,求变换后的三角形顶点坐标。;;;5.3.2 相对于任意方向的二维几何变换 ;;;class CTransform//二维几何变换 { public: CTransform(); virtual ~CTransform(); void SetMat(CP2 *,int); void Identity(); void Translate(double,double);//平移变换矩阵 void Scale(double,double);//比例变换矩阵 void Scale(double,double,CP2);//相对于任意点的比例变换矩阵 void Rotate(double);//旋转变换矩阵 void Rotate(double,CP2);//相对于任意点的旋转变换矩阵 void ReflectO();//原点反射变换矩阵 void ReflectX();//X轴反射变换矩阵 void ReflectY();//Y轴反射变换矩阵 void Shear(double,double);//错切变换矩阵 void MultiMatrix();//矩阵相乘 public: double T[3][3]; CP2 *POld; int num; };;void CTransform::Identity()//单位矩阵 { T[0][0]=1.0;T[0][1]=0.0;T[0][2]=0.0; T[1][0]=0.0;T[1][1]=1.0;T[1][2]=0.0; T[2][0]=0.0;T[2][1]=0.0;T[2][2]=1.0; } void CTransform::Translate(double tx,double ty)//平移变换矩阵 { Identity(); T[2][0]=tx; T[2][1]=ty; MultiMatrix(); } void CTransfo

文档评论(0)

ccx55855 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档