二维图形转换.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第一节 用户坐标到屏幕坐标变换 1. 窗口到视口的变换 2. 实型值到整型值的变换 3. y坐标值方向变换 4. 长宽比例变换 第二节 二维几何变换 一、 基本变换 1、比例变换 2. 对称变换 3. 错切变换 4. 旋转变换 5. 平移变换 二、复合变换 1. 复合平移 2. 复合比例 3. 复合旋转 4. 相对点(xo,yo)的比例变换 5. 相对点(xo,yo)的旋转变换 从这一部分开始,进入了图形编程的比较烦琐的部分,要真正对图形编程有所了解,这一部分的内容是必须要把握的。 在计算机绘图过程中,经常需要进行绘图变换,主要包括二维图形变换和三维图形变换。这一部分讨论二维图形变换,其内容有用户坐标到屏幕坐标的变换、图形的比例变换、对称变换、错切变换、旋转变换、平移变换和复合变换等。后面讲到了二维剪裁,即线段裁剪与多边形裁剪。 第一节 用户坐标到屏幕坐标变换 假设纸上有一个图形,要用计算机把它在屏幕上画出来。那么首先碰到的问题是,纸上的图形采用的坐标是实数域域中的直角坐标系或是极坐标系,统称为用户坐标系。而屏幕上采用的坐标系是整数域中直角坐标系,这类坐标系统称为设备坐标系。因此用户坐标系中图形需要经过变换才能绘制在屏幕上,显然这个变换的内容包括: 1)将用户坐标系中任意范围区域转换到屏幕某个范围区域,从而用户坐标系此范围区域内的图形也转换到屏幕上该范围区域内。 2)用户坐标系此区域内图形上的坐标值转换到屏幕上该范围区域内后不一定是整数,取整后才成为该范围区域内的屏幕坐标值。 3)用户坐标右手系到屏幕坐标左手系的坐标轴方向变换。 4)当屏幕坐标系水平方向与垂直方向刻度不等(即像素间距不等)时,为保持图形不走样,还要进行比例变换。下面介绍这些内容的具体计算问题。 1.窗口到视口的变换 更确切地说,是实际图形到屏幕图形的转换。有时也称为数据规格化。 在用户坐标系中,指定一矩形域以确定要显示(或绘制)的图形部分,这个矩形区域称为窗口。在屏幕上可任选一矩形域以显示(或绘制)窗口内的图形,该域称为视口。如图2-1所示。 一般视窗口的四条边界分别为: 左边界 x=x1、右边界 x=x2.下边界 y=y1,上边界y=y2。 视口的四条边界分别为: 左边界sx=sx1,右边界sx=sx2,上边界sy=sy1,下边界sy=sy2。 经变换后应有,窗口的上边界线段(或下边界线段)长x2-x1变换成视口上边界线段(或下边界线段)长sx2-sx1。设其比例变换因子为k1,则可得 k1*(x2-x1)=sx2-sx1 k1=(sx2-sx1)/(x2-x1) 对窗口内任一x坐标(x1=x=x2)变换后为视口内水平方向sx坐标(sx1=sx=sx2)。由上述有: k1*(x-x1)=sx-sx1 sx=sx1+k1*(x-x1) =sx1+(x-x1)*(sx2-sx1)/(x2-x1) 同样,经变换后窗口的左边界线段(或右边界线段)长y2-y1变换成视口左边界线段(或右边界线段)长sy2-sy1。设其比例变换因子为k2,则可得 k2*(y2-y1)=sy2-sy1 k2=(sy2-sy1)/(y2-y1) 对窗口内任一y坐标(y1=y=y2)变换后为视口内垂直sy坐标(sy1=sy=sy2),应有 k2*(y-y1)=sy-sy1 sy=sy1+k2*(y-y1) =sy1+(y-y1)*(sy2-sy1)/(y2-y1) 于是对窗口内图形上任一点坐标(x,y)变换到屏幕上视口内成为(sx,sy),则 sx=sx1+(x-x1)*(sx2-sx1)/(x2-x1) sy=sy1+(y-y1)*(sy2-sy1)/(y2-y1) 写成简式 sx=k1*x+a sy=k2*y+b 这里 a=sx1-k1*x1 b-sy1-k2*y1 k1=(sx2-sx1)/(x2-x1) k2=(sy2-sy1)/(y2-y1) 2. 实型值到整型值的变换 上面对窗口内图形上任一点坐标(x,y)变换到屏幕上视口内成为(sx,sy), sx=k1*x+a sy=k2*y+b k1,k2,a,b同上 这样计算出来的sx,sy一般是实型值,而屏幕上视口内屏幕坐标是整型值,因此要将sx,sy实型值转换成屏幕坐标系的整型值。这可以通过四舍五入的方法将实型值的绝对值圆整化。由于c语言中已经替我们想到了这点,它提供的函数

文档评论(0)

df829393 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档