实验三 二维图形的几何变换.doc

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

计算机图形学 实验指导书 陈华光、陈多、刘长松编 专业班级 计算机0902 _ 姓 名   _ 学 号  200903010225 _ 湖南工程学院 二○一二年六月 计算机图形学实验报告三 实验名称 二维图形的几何变换 评分        _ 实验日期 2012 年 6 月 11 日 指导教师 李 长 松 _ 姓名 专业班级 计算机0902 学号   _  一、实验目的 1、复习不同的二维坐标变换公式。 2、掌握二维坐标变换公式的使用方法。 3、对二维坐标组合变换的灵活运用。 二、实验要求 1、在屏幕上绘制出较简单的几何图形。 2、 对1的图形进行平移变换,绘制出变换后的几何图形,并在下边标注出实施x,y各多少的平称坐标变换。 3、对1的图形进行旋转变换,绘制出变换后的几何图形,并在下边标注出实施多少度的旋转坐标变换。 4、对1的图形进行对称变换,绘制出变换后的几何图形,并在下边标注出实施对什么坐标进行的对称变换。 5、对1的图形进行错切变换,绘制出变换后的几何图形,并在下边标注出实施对何种坐标进行的错切变换。 6、对1的图形进行比例变换,绘制出变换后的几何图形,并在下边标注出实施的多少比例坐标变换。 7、为了进行比较,适当选择坐标,可将原图(变换前)及经过不同变换后的图形绘制在同一个屏幕上,设置不同的线形或颜色加以区分各种变换。 三、关键算法及实现原理 1、二维图形的变换实际上是一个变换矩阵,平面图形是由若干个二维点(xi,yi)组成,经过变换后的二维点(x’i, y’i),其变换公式为: 对应于不同的变换,都是用矩阵乘法来计算坐标,只需改变变换矩阵即可。因此对每一种坐标变换编成一个子程序。 2、编程时的技巧 用数组将二维图形的特征坐标点(顶点)保存,将由特征坐标点(顶点)绘制出二维图形的命令编一个绘图子程序,调用绘图子程序绘制出变换以前的图形,根据不同的两维几何变换,选用相应二维坐标变换公式(调用相应的子程序)将二维坐标进行坐标变换;再调用绘图子程序将变换后的坐标值在屏幕上绘制变换后的几何将图形,可选用不同的颜来区分各种不同几何变换的图形。 四、程序调试中的问题 Turbo C2.0环境不是太熟悉,经反复的练习后才得以灵活运用! 在调试程序中,发现图像显示的不合要求,计算发现多是参数算错,后经修改,好了一点。 从基本的几何问题入手,根据实际的变换过程编写程序。其中遇到了不少问题,比如,在求关于直线的对称时,最开始由于对称变换的变换矩阵出现了错误,使得最后出现了非预期的结果。最后通过检查,才发现了这个问题。 五、程序运行结果或数据 ?Matlab命令如下: x=-2:0.1:2; y=-2:0.1:2; [X,Y]=meshgrid(x,y); %[X,Y,Z]=peaks; Z=X.*Y; subplot(1,2,1) contour(X,Y,Z) title(二维等高线) subplot(1,2,2) contour3(Z,30) title(‘三维等高线’) 六、实验收获及体会 通过本次试验,我基本掌握了二维几何变换的方法。 从基本的几何问题入手,根据实际的变换过程编写程序。其中遇到了不少问题,比如,在求关于直线的对称时,最开始由于对称变换的变换矩阵出现了错误,使得最后出现了非预期的结果。最后通过检查,才发现了这个问题。 3、二维几何变换有着广泛的应用,使得数学的基本知识在计算机上得到了实现。 七、参考源程序(可附页) #includegraphics.h #includeconio.h #includedos.h #includemath.h double xmax=639.0, ymax=399.0; double f[3][3],xx,yy; int scx(double xj) { int x; x=(int)(xj+xmax/2); return(x); } int scy(double yj) { int y; y=ymax-(int)(yj+ymax/2); return(y); } void parallel(double dx,double dy) { f[0][0]=1.0;f[0][1]=0.0;f[0][2]=0.0; f[1][0]=0.0;f[1][1]=1.0;f[1][2]=0.0; f[2][0]=dx; f[2][1]=dy; f[2][2]=1.0; } void scale(double

文档评论(0)

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

教师资格证持证人

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

领域认证该用户于2024年04月12日上传了教师资格证

1亿VIP精品文档

相关文档