计算机图形学实验报告3_第1页
计算机图形学实验报告3_第2页
计算机图形学实验报告3_第3页
计算机图形学实验报告3_第4页
计算机图形学实验报告3_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、计算机图形学实验报告实验名称 二维图形的几何变换 评分 实验日期 2012 年 5 月 24 日 指导教师 刘长松 姓名 专业班级 学号 一、实验目的1、复习不同的二维坐标变换公式。2、掌握二维坐标变换公式的使用方法。3、对二维坐标组合变换的灵活运用。二、实验要求1、在屏幕上绘制出较简单的几何图形。2、 对1的图形进行平移变换,绘制出变换后的几何图形,并在下边标注出实施x,y各多少的平称坐标变换。3、对1的图形进行旋转变换,绘制出变换后的几何图形,并在下边标注出实施多少度的旋转坐标变换。4、对1的图形进行对称变换,绘制出变换后的几何图形,并在下边标注出实施对什么坐标进行的对称变换。5、对1的图

2、形进行错切变换,绘制出变换后的几何图形,并在下边标注出实施对何种坐标进行的错切变换。6、对1的图形进行比例变换,绘制出变换后的几何图形,并在下边标注出实施的多少比例坐标变换。7、为了进行比较,适当选择坐标,可将原图(变换前)及经过不同变换后的图形绘制在同一个屏幕上,设置不同的线形或颜色加以区分各种变换。三、关键算法及实现原理1、二维图形的变换实际上是一个变换矩阵,平面图形是由若干个二维点(xi,yi)组成,经过变换后的二维点(xi, yi),其变换公式为: 对应于不同的变换,都是用矩阵乘法来计算坐标,只需改变变换矩阵即可。因此对每一种坐标变换编成一个子程序。2、编程时的技巧用数组将二维图形的特

3、征坐标点(顶点)保存,将由特征坐标点(顶点)绘制出二维图形的命令编一个绘图子程序,调用绘图子程序绘制出变换以前的图形,根据不同的两维几何变换,选用相应二维坐标变换公式(调用相应的子程序)将二维坐标进行坐标变换;再调用绘图子程序将变换后的坐标值在屏幕上绘制变换后的几何将图形,可选用不同的颜来区分各种不同几何变换的图形。四、程序调试中的问题在调试的过程中,经常出现一些字符的错误及语法方面的错误,都是由于粗心造成的。不过在静下心来,仔细检查反复查看也就解决了其中的问题。五、程序运行结果或数据六、实验收获及体会此次试验是关于二维图形的转换,通过这次实验掌握了二维坐标变换公式的使用方法,知道了怎样对二维

4、坐标组合变换的灵活运用。比起仅仅只在课堂上听些理论知识,更进一步了解了这方面的知识,受益匪浅。七、参考源程序(可附页)#include#include#include#includedouble xmax=639.0, ymax=399.0;double f33,xx,yy;int scx(double xj)int x;x=(int)(xj+xmax/2);return(x);int scy(double yj)int y;y=int(ymax-(int)(yj+ymax/2);return(y);void parallel(double dx,double dy)f00=1.0;f01=0

5、.0;f02=0.0;f10=0.0;f11=1.0;f12=0.0;f20=dx; f21=dy; f22=1.0;void scale(double s)f00=s;f01=0.0;f02=0.0;f10=0.0;f11=s;f12=0.0;f20=0.0; f21=0.0; f22=1.0;void taisho_y()f00=-1.0;f01=0.0;f02=0.0;f10=0.0;f11=1.0;f12=0.0;f20=0.0; f21=0.0; f22=1.0;void axis()line(scx(0.0),scy(-ymax/2),scx(0),scy(ymax/2);line

6、(scx(-xmax/2),scy(0.0),scx(xmax/2),scy(0.0);void tuoq(double a,double b)f00=1.0;f01=b;f02=1.0;f10=a;f11=1.0;f12=0.0;f20=0.0; f21=0.0; f22=1.0;double affinex(double x,double y,double d)xx=x*f00+y*f10+d*f20;return(xx);double affiney(double x,double y,double d)yy=x*f01+y*f11+d*f21;return(yy);void drawt

7、u(double x25,double y25)int i;for(i=0;i=3;i+) line(scx(x2i),scy(y2i),scx(x2i+1),scy(y2i+1); void main()int drive=DETECT,mode;static double x1=50.0,60.0,150.0,160.0,50.0;static double y1=0.0,50.0,50.0,-10.0,0.0;static double x25,y25;int i;double x,y,xx,yy,yt;initgraph(&drive,&mode,c:tc3bgi); setcolor

8、(RED); axis(); for(i=0;i=3;i+) line(scx(x1i),scy(y1i),scx(x1i+1),scy(y1i+1); /*parallel(100,-100) */ getch(); x=100;y=-100; parallel(x,y); setcolor(BLUE); for(i=0;i=4;i+) x2i=affinex(x1i,y1i,1.0); y2i=affiney(x1i,y1i,1.0); drawtu(x2,y2); yt=scy(y20)+10; outtextxy(scx(x20),yt,parallel(100,-100);/*tai

9、sho_y() */ getch(); taisho_y(); setcolor(YELLOW); for(i=0;i=4;i+) x2i=affinex(x1i,y1i,1.0); y2i=affiney(x1i,y1i,1.0); drawtu(x2,y2); yt=scy(y20)+10; outtextxy(scx(x20),yt,taisho_y);/*touq(2,0) */ getch(); tuoq(2,0); setcolor(LIGHTBLUE); for(i=0;i=4;i+) x2i=affinex(x1i,y1i,1.0); y2i=affiney(x1i,y1i,1.0); drawtu(x2,y2); yt=scy(y20)+10; outtextxy(scx(x20),yt,tuoq(2,0);/*scale(2) */ getch(); scale(2); setcolor(LIGHTRED); for(i=0;i=4;i+) x2i=affinex(x1i,y1i,1.0); y2i=affiney(x1i,y1i,1.0); drawtu(x2,y2); yt=scy(y20)+10; outtextxy(scx(x20),yt,scale 2);getch();closegraph();内容总

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论