资源描述:
《实验四01二维图形的几何变换.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、计算机图形学实验指导书陈华光、陈多、刘长松编专业班级计算机0902_姓名 田 鹏_学号 200903010225_湖南工程学院二○一二年六月计算机图形学实验报告四实验名称绘制简单的三维图形评分 _实验日期2012年6月12日指导教师李长松 _姓名专业班级计算机0902 学号200903010211 _一、实验目的1、复习用二维图来表示三维立体图形,三视图的表示及的三视图的变换矩阵2、掌握用C语言编程实现三维简单立体的正等测投影的绘制3、掌握用C语言编程实现三维简单立体的三视图的绘制4、掌握用C语言编程实现三维简单立体的透视图的绘制5、
2、用C语言编写的图形变换函数二、实验要求1、在屏幕上绘制出一个长方体或简单几何体的正等测投影的几何图形,要求在图形下方标出是正等侧、还是正二侧投影图形。2、在屏幕上绘制出一个长方体或简单几何体的三视图投影图形,要求在图形下方标出是什么投影图形。3、在屏幕上绘制出一个长方体或简单几何体的透视投影图形。三、关键算法及实现原理1、二维屏幕表示三维立体图的关键:屏幕是一个二维的平面空间,要在它上做出三维的图形,就必须把三维的空间图形通过一个投影变换变为二维的图形,即投影变换把三维坐标点(x,y,z)变为(x’,0,z’)。2、投影变换的类型1、按下述步骤编写绘制三
3、维图形的函数①在草稿纸上给出草图,并确定各顶点的序号和相应的顶点坐标值,建立顶点表和连边表。②在程序中定义三个数组,用于存放顶点的(x,y,z)的坐标值。③实施对立方体进行相应的投影变换,即对顶点矩阵与变换矩阵相乘,得到一个新的顶点矩阵。④用新顶点表的坐标值,注意些时只有x坐标和z坐标,y坐标已在投影中消掉,按边表的连线规则,用line函数在顶点之间两两连线。3、将每一个几何变换编写成一个函数,在主程序中进行坐标变换时,直接调用相应的函数即可;变换后调用绘图函数用不同颜色在屏幕上绘出变换后的图形。四、程序调试中的问题用matlab绘制二维与三维曲线和三维
4、曲面的过程中,不能灵活使用一些常用的绘图函数如mesh,surf等。五、程序运行结果或数据x=-5:0.1:5;y=-4:0.1:4;[x,y]=meshgrid(x,y);z=0.5*x.^3+y.^2;subplot(2,2,1);mesh(x,y,z);title(‘三维网格曲面’)subplot(2,2,2);surf(x,y,z);title(‘三维曲面’)subplot(2,2,3);meshc(x,y,z);title(‘三维网格曲面(带有等值线)’)subplot(2,2,4);surfc(x,y,z);title(‘三维曲面(带有等值线
5、)’)六、实验收获及体会通过这次实验使我对二维和三维图形的绘制,使我更加了解了图形的绘制过程,提高了动手能力,使我能够在以后解决其它问题时使用matlab作图更加熟练。参考源程序(可附页)#include#include#include#includedoublexmax=639.0,ymax=399.0;doublef[4][4],xx,yy,zz,dd;intscx(doublexj){intx;x=(int)(-xj+xmax/2);return(x);}intscy(doub
6、leyj){inty;y=ymax-(int)(yj+ymax/2);return(y);}voidtv(){f[0][0]=1.0;f[0][1]=0.0;f[0][2]=0.0;f[0][3]=0.0;f[1][0]=0.0;f[1][1]=0.0;f[1][2]=0.0;f[1][3]=0.0;f[2][0]=0.0;f[2][1]=0.0;f[2][2]=1.0;f[2][3]=0.0;f[3][0]=0.0;f[3][1]=0.0;f[3][2]=1.0;f[3][3]=1.0;}voidth(intn){f[0][0]=1.0;f[0][1]
7、=0.0;f[0][2]=0.0;f[0][3]=0.0;f[1][0]=0.0;f[1][1]=0.0;f[1][2]=-1.0;f[1][3]=0.0;f[2][0]=0.0;f[2][1]=0.0;f[2][2]=0.0;f[2][3]=0.0;f[3][0]=0.0;f[3][1]=0.0;f[3][2]=-n;f[3][3]=1.0;}voidtw(intd){f[0][0]=0.0;f[0][1]=0.0;f[0][2]=0.0;f[0][3]=0.0;f[1][0]=-1.0;f[1][1]=0.0;f[1][2]=0.0;f[1][3]=
8、0.0;f[2][0]=0.0;f[2][1]=0.0;f[2][2]=1.0;