图形变换C语言课程设计.docx

上传人:lao****ou 文档编号:1045146 上传时间:2024-09-20 格式:DOCX 页数:19 大小:165.48KB
下载 相关 举报
图形变换C语言课程设计.docx_第1页
第1页 / 共19页
图形变换C语言课程设计.docx_第2页
第2页 / 共19页
图形变换C语言课程设计.docx_第3页
第3页 / 共19页
图形变换C语言课程设计.docx_第4页
第4页 / 共19页
图形变换C语言课程设计.docx_第5页
第5页 / 共19页
亲,该文档总共19页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《图形变换C语言课程设计.docx》由会员分享,可在线阅读,更多相关《图形变换C语言课程设计.docx(19页珍藏版)》请在第一文库网上搜索。

1、课程设计报告课程名称:学院:专业班级:学生姓名:学号:指导教师:完成时间:报告成绩:评阅意见:日期评阅教师.个图形变换函数的设一、设计目的1、巩固面向对象编程的基本理论知识;2、进一步熟悉ViSUaIC+6.0的编程环境,掌握相关控件的使用方法;3、更深层次的理解自定义函数、数组和类;4、更深层次的理解自定义函数和for语句;5、增强实践操作能力;6、提高综合运用所学理论知识独立分析和解决问题的能力。二、设计要求用任一种高级语言编写出34种常用的二维、三维图形基本变换程序要求在报告中写出具体的调试过程,并附上源程序。三、设计内容本程序为一个综合型程序:能实现二维和三维的图形的各种变换。例如,可

2、以进行二维(或三维)图形的比例,复制,平移,对称,旋转,五种变换。程序预设图形顶点个数最多不超过50个,如果需要扩大顶点数目,直接在程序开头的N值进行赋值。在进行旋转变换时,预设圆周率为M值,如果需修改时,直接对程序开头的M值进行修改。程序功能的原理是通过变换基本矩阵,实现对顶点不同的变换,从而实现对图形的变换。四、具体步骤1:输入图形是几维图形。(二维或三维);2:输入顶点个数(小于50),然后输入各点坐标,注意输完一个坐标后同车后输入下一个坐标;3:输入变换类型,根据提示输入代表类型的数字,接下来输入相关变换所需要的参数;4:待各个参数输入完毕后,回车后得到结果。五、设计要求1、对系统进行

3、功能模块设计、算法和控制模块设计;2、系统设计要有实用性;3、编程简单易懂,可用,功能较全面;4、课题说明书、流程图条理要清楚;5、设计完成后,每人上交一份设计报告说明书,必须用专用的课程设计报告纸,要求包含以下内容:题目,基本原理叙述,流程图,源程序清单,运行结果,调试情况分析,设计总结体会,致谢;6、进度安排(1周)题目提前1周布置,使学生作好充分的准备。分析设计准备阶段建议1天,编程调试阶段建议2天,总结报告和书写说明书和考核阶段建议2天。六图形变换函数的设计方法与过程1、点的矩阵表示在二维空间中,用坐标(x,y)表示平面上的一点。为了便于进行各种变换运算,通常把二维空间中的点表示成2x

4、1行矩阵或者表示成1x2列矩阵。即2、二维图形的矩阵表示点是构成图形的最基本要素,可用点的集合(简称点集)来表示一个二维图形,其矩阵的形式为:3、二维图形的基本变换在计算机绘图中,常常要对图形进行比例、对称、旋转、平移、错切、投影等各种变换,既然图形可以用点集来表示,那么,二维图形的基本变换就可以通过点集的变换来实现。点的位置改变了,图形就会随之改变。矩阵运算、旧点(集)X变换矩阵新点(集)(1)、平移变换平移是指点从一个位置移动到另一个位置的直线移动,即M光,y)2*(%*,y*)0令X、Y轴方向的偏移量分别为1和m,则X*=X+/yi=y+m图5-1平瞒换(2)、比例变换设a和d分别为X、

5、Y轴方向的缩放比例系数,则点P(My)p*(*,y*),变换为X*=axy*=dy式中,称为比例变换矩阵,比例变换如图5-2。比例因子a和d分别取不同的值(a,d0)将获得不同的变换结果:、恒等变换Q=d=1,变换后点的坐标不变。(b)、等比变换a=d19当a=d1时,变换后图形等比例放大如图5-2所示。当二d1时,变换后图形等比例缩小。(c)、非等比变换若Qd,变换后图形产生畸变。T=如取变换矩阵为2OO0.5则对图形框的变换为:1020202020101010(3)、旋转变换设点(,y)绕坐标原点逆时针旋转角,则点PEy)2*,y*)的变换为x*=xcos6+ysinSCoSeSineT=

6、y*=-xsinS+ycosS|_-sin0COSe式中,为旋转变换矩阵。(4)、对称变换对称变换即产生图形的镜像,用来计算对称图形,也称为镜射变换。包括对于坐标轴、坐标原点、45直线和任意直线的对称变换。、对X轴的对称变换对X轴的对称变换应有二羽*=),变换矩阵为:T。-1变换果如图5-4所示。对Y轴的对称变换10X*=fy*=y,变换矩阵为:rIo1,变换结果如图5-4所示。(b)、对原点的对称变换_F-io*=t、*=、,变换矩阵为:r1-I,对称变换结果如图5-4所示。(c)、对45线的对称变换对+45。线的对称变换TJO对+45。线的对称应有:X*=%=则变换矩阵为:11.对称变换结

7、果如图5-5所示。对-45。线的对称变换FO1对-45。线对称应有:%*=%y*=-则变换矩阵为:IT0-对称变换结果如图5-5所示。(5)、错切变换错切用于描述受到扭曲、剪切后的几何体形状。1bx*y*=x+cyy+bxjy_ci=xyT1田=式中1C”,为错切变换矩阵,其中C和b不同时为0。(a)、沿X轴向错切T=令1C1错切变换矩阵中的b=0,且c0,其变换就是沿X轴方向错切。即1O-Ny*+Qy=xyc1j=yT当c0时,错切沿着X轴的正向;当cV0时,错切沿X轴负向。错切直线与Xtga=一轴的夹角为Cy如果设c=2,对图5-6a中的方形图框进行错切变换,有:0102010沿X轴方向错

8、切变换的结果如图5-6b所示。(b)、沿Y轴向错切令I1错切变换矩阵中的c=0,且b0,其变换就是沿Y轴方向的错切。即1b1x*y*=xy+bx=xyo1=xyT当b0时,错切沿着Y轴的正向;当b0时,错切沿Y轴负向。错切直线与YX1tga=一轴的夹角为bxbO如果设b=2,对方形图框进行错切变换,有:0101001010000101001030200沿Y轴方向错切变换的结果如图5-6c所示。(30,10)(10,0)X(10,0)注意:上面介绍的错切变换的错切方向是指第I象限而言,其余象限的点的错切方向应作相应的改变。4、二维齐次坐标和齐次变换矩阵(1)、二维齐次坐标前面我们已经介绍了五种基

9、本变换,除了平移变换以外,其余四种变换的系数都abT=可以用一个2x2矩阵来表示,即1Cd1变换矩阵中a、b、c、d为变换比例因子,它们取值不同,可以实现各种不同变换。为了统一,可以将二维基本变换矩阵的形式由2X2阶矩阵扩充成一个3X2阶矩阵,即abT=cd1mJ32这样以来又出现了一个新的问题,即二维图形的点集矩阵是nX2阶,而变换矩阵是3X2阶,二者无法相乘,不能进行图形变换运算。为此,引入齐次坐标的概念。在齐次坐标系中,n维空间的位置矢量,用n+1维矢量表示,即二维空间的位置矢量用三维矢量表示。一个二维位置矢量卜W用齐次坐标表示即为卜丁为,其中的h为附加坐标,是一个不为零的参数。一个二维

10、点的齐次坐标表示不是唯一的,如二维点2。10可以有2。101,40202,6040可,等无穷组齐次坐标。通过对齐次坐标的规范化,即用各坐标分别除以附加坐标,得到一个规范化坐标卜yU,也就是将h转化为1。通过二维点的齐次坐标表示,把二维图形的点集矩阵扩充为nX3阶矩阵。这样,点集矩阵就可以同变换矩阵进行乘法运算了:abcdxy1mJ=ax+cy+1bx+dy+m(2)、二维齐次变换矩阵为了使二维变换矩阵具有更多的功能,可将3X2阶变换矩阵进一步扩充为3X3abpT=cdq阶矩阵,其各元素的功能和几何意义各不相同,可以分割成四块:/加/Iab其中2X2阶矩阵14可以实现图形的比例、对称、错切、旋转

11、等变换;1X2阶矩阵可以实现图形的平移变换;2X1阶矩阵M可以实现图形的透视变换;而时可以实现图形的全比例变换。5、二维图形的组合变换有些变换仅用一种基本变换是不能实现的,必须有两种或多种基本变换组合才能实现。这种由多种基本变换组合而成的变换称之为组合变换,相应的变换矩阵叫做组合变换矩阵。组合变换的目的是对一个点进行一次性变换,使得变换的效率更高。(1)、绕任意点旋转变换平面图形绕任意点P(*,y*)旋转”角,需要通过以下几个步骤来实现:(a)、将旋转中心平移到原点,变换矩阵为:1OoT=O1O一%,一y7p1(b)、将图形绕坐标系原点旋转角,变换矩阵为:cosdfSina0Tr(cc)=-S

12、inOCoSa0001(C)、将旋转中心平移回到原来位置,变换矩阵为:10oTx,y=010_XPyp1因此,绕任意点的旋转变换矩阵为:1OCOSOfSina。O0=O1-sincrCOSQf1O_-S一41_。Od%1cos。sincf0-sin。cos6f0xp(1-coscif)+ypsina-XPSina+yp(1-cosa)1(2)、对任意直线的对称变换基本变换中的对称变换适用于通过坐标原点的任意直线。如果直线不通过原点,则首先将该直线平移,使其过原点,然后再沿用基本的对称变换,即可求得相对于任意直线的对称变换矩阵。设任意直线的方程为:Ax+By+C=0,直线在X轴和y轴上的截距分别

13、为-C/A和C/B,直线与X轴的夹角为,a=arctg(-AB)o如图5-7所示,对任意直线的对称变换可由以下几个步骤来完成:图5-7对任意直线的对称变换(a)、平移直线,沿X向将直线平移,使其通过原点(也可以沿y向平移),其变换矩阵为:1OO-Tc/a-010ACIA01(b)、绕原点旋转,使直线与X坐标轴重合(也可以与y轴重合),变换矩阵如下:cos(-cif)sin(-6z)0CoSa-sma0TR(-a)=-sin(-)COS(-0)0SinaCoSa0001001(c)、对于X轴进行对称变换,其变换矩阵为:100七(X)=0-10001(d)、绕原点旋转,使直线回到原来与X轴成角的位

14、置,变换矩阵为:COSdfsincr0Trw=-sincrcoscr0001(e)、平移直线,使其回到原来位置,变换矩阵为:10O-T%=010A-C/A01通过以上五个步骤,即可实现图形对任意直线的对称变换,其组合变换如下:COS20Sin200Sin20-COS200(cos2cf-1)CAsin2aC/A1通过上面的变换可以看出,组合变换是通过基本变换的组合而成的,点或点集的多次变换可以一次完成,这要比逐次进行变换效率高。由于矩阵的乘法不符合交换律,即:ABBA,因此,组合的顺序一般是不能颠倒的,顺序不同,则变换的结果亦不同。图5-8、图5-9显示了对T字图形进行不同顺序的基本变换的组合变换结果。七、程序实例对一个三维的六方体图形进行绕X轴

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 应用文档 > 工作总结

copyright@ 2008-2022 001doc.com网站版权所有   

经营许可证编号:宁ICP备2022001085号

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有,必要时第一文库网拥有上传用户文档的转载和下载权。第一文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第一文库网,我们立即给予删除!



客服