江西理工大学应用科学学院信息工程系计算机科学与技术教研室计算机图形学课程设计报告试验名称计算机图形学实验共10页成绩实验日期2008年7月1日班级微机051班组别交报告日期2008年7月15日学号05姓名段石林同组学生教师审批签字图形学实验报告——计算机051班32号 段石林实验目的:通过本实验,使自己了解计算机图形学的有关原理、算法及系统,掌握基本图形显示程序设计方法,及二维和三维图形变换程序设计方法,为进一步学习计算机辅助设计方面的技术知识打下基础。实验内容和要求:1、实验内容直线和圆的生成,设定屏幕图形工作方式,彩色象素的读写,直线和圆的扫描转换。多边形的裁剪和填充图形变换:二维变换、及投影、透视变换2、上机实验要求上机实验是巩固课堂内容。增强感性认识。实验后要求学生认真编写实验报告,作为学生平时成绩的依据。实验报告:实验环境:,MFC实现功能:直线和圆的生成,直线和圆的扫描转换。并且实现了用鼠标点击取点的交互功能。多边形的裁剪和填充,实现了点扫描与直线扫描多边形。直线剪裁,并可以自动判断与某条或某些条直线可剪裁,剪裁结果是一条线段生成两到三条线段,并可在文档中保存。图形变换:二维变换:平移、旋转、缩放功能,其中平移已实现了鼠标点击取点的交互功能。提供了用户对对象的选择,再在在被选择的对象上进行相应操作。实现了文档存储与打开。文件格式::第一行表示有3种类形的图元数据,在本程序中为3,分别为直线,圆,多边形,第二行为第一个数据为类型,1表示为直线容器,第二个数据3表示此直线容器(用双链表实现)中有3条直线。下面3行的格式相同,分别是颜色,起点、终点的x、y坐标。第六行中3表示类型3是多边形,2表示多边形个数。再下面就是各个多边形的信息的,0表示不用填充,15550是颜色值,3表示3边形。下面三行是三个顶点的x、y坐标。11-16行信息同理。17行2表示类型2为圆,1表示1个,18行各个数据分别表示,是否填充、颜色、圆心x、y坐标、半径。可以直接用记事等不带格式的文本编辑器按文件格式进行手工修改,注意:一定要按格式,否则将不能生成你想要的图元。所用数据结构:GraphObject:本程序得用一个数据结构把所有的图元装入了,并可以根据不同的类型,做不同的动作,类的定义如下://GraphObject是用来存放各种图形对象的,根据type的不同,//{private: void*object; inttype;public: GraphObject(); GraphObject(void*Object,intType); virtual~GraphObject(); //根据type的不同,做不同的动作。 boolaction(CDC*pCDC); //根据type的不同,保存不同为格式。 boolsave(ofstream&out);};再用CList<GraphObject,GraphObject&>GraphList;容器把所有的对象都装入进去了。当然,后来为了方便,再加了三个容器,这个容器的作用就不大了,可它却体现了大自然的面向对象的基本原理,值得关注。Matrix:#//3*3矩阵类:
计算机图形学课程设计报告 来自淘豆网m.daumloan.com转载请标明出处.