《江苏大学-计算机图形学实验1报告(共11页).doc》由会员分享,可在线阅读,更多相关《江苏大学-计算机图形学实验1报告(共11页).doc(11页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上实验报告的内容提纲实验报告应包括以下内容:(1)实验题目(2)实验内容(3)实验环境:本次上机实验所使用的平台和相关软件。(4)问题分析:对所要解决的问题进行阐述和分析,提出解决方法,列出解决步骤。(5)算法设计:用流程图或伪代码描述解决问题的算法。(6)源代码(7)程序运行结果(8)总结1 实验报告的格式规范(1)报告按以下内容次序编排:封面、成绩评定表、报告。(2)用A4纸,通栏排版,页边距:上2.2厘米,下2厘米,左2.7厘米,右2.3厘米;(3)行距一律用1.5倍行距;(4)中文一律用宋体,英文和数字一律用Times New Roman;(5)一级标题用四号粗
2、体,段前段后不空行,二级标题用小四号粗体,左端不缩进,段前段后均不留多余空格;(6)正文用小四号,每段文字首行缩进2个字符。(7)关于正文中的“图”和“表”: 图形下方标示图号与图名(见下面示例),图号与图名字体要求:中文 宋体 小五号, 数字和英文 Times New Roman,小五号;图1 学员报名信息管理模块 表格上方标示表号与表名(见下面示例),表号与表名字体要求:中文 宋体 小五号, 数字和英文 Times New Roman,小五号。表1 科目表(tb_Subject)字段名称数据类型是否主键/外键是否为空备注IDint主键科目编号SubNameVarchar(50)科目名称 计
3、算机科学与通信工程学院实验报告课程计算机图形学实验题目二维图形绘制学生姓名学号专业班级指导教师日期 成绩评定表评价内容具体内容权重得分论证分析方案论证与综合分析的正确、合理性20%算法设计算法描述的正确性与可读性20%编码实现源代码正确性与可读性30%程序书写规范标识符定义规范,程序书写风格规范20%报告质量报告清晰,提交准时10%总 分指导教师签名1. 实验内容绘制金刚石图案。金刚石图案的成图规则是:把一个圆周等分成n份,然后每两点之间连线。当n取奇数时,该图案可一笔连续绘成,即用MoveTo函数确定一个当前点,然后连续用LineTo函数连点成线。绘制下图所示的魔术三角形图案 ,采用三种可明
4、显区分的颜色填充。 绘制递归圆应用递归的方法绘制如下所示的图案2. 实验环境操作系统:Windows xp编译环境:Vc+6.03. 问题分析1.金刚石绘制本实验的核心是在圆的基础上绘制金刚石图案。金刚石图案是一个二维图案,仅使用二维坐标(x,y)就可以绘制,本实验使用数组实现。金刚石图案是有依次连接位于圆上的不同等分点的直线段构成。等分点个数越多,金刚石图案越复杂。2.魔术三角本实验可以理解为将三个图形进行重新着色。它们各自的颜色不同。3.递归圆:先确定首个圆的中心点坐标和半径与其周围八个小圆的中心点坐标和半径,再根据递归的深度再算出递归后圆的半径,并计算出它们的圆中心点坐标。4. 算法设计
5、1)由于是使用一笔画的方式绘制图形,因此算法设计的难点是避免直线段的重复连接。为此设计一个二重循环,代表起点索引号的外层整型变量i从i=0循环到i=n-2,代表终点所以你好的内层整型变量j从j=j+1循环到j=n-1。以(pi.x,pi.y)为起点,以(pj.x,pj.y)为终点依次连接各线段形成金刚石图案。2)可以借助一个时间差对三个图形进行重新着色,但是为他们涂同一种颜色。由于存在延时,所以拥有不同着色次数的三个图形仍旧拥有不同的颜色。3)设计一个二重循环,代表起点的外层循环从i0循环到in-2,代表终点的内层循环从ji+1循环到j=n-1。以pi.x,pi.y作为起点,以pj.x,pj.
6、y作为终点绘制连接线。5. 源代码void CDiamondView:DrawDiamond(int nVertex, int radius,int millisecond)int s=0;double x0=600;double y0=300;double x100,y100;for(int i=0;iFillRect(&rect,&br);CPen newPen,*oldPen;newPen.CreatePen(PS_SOLID,2,RGB(255,0,0);oldPen = pDC-SelectObject(&newPen);pDC-MoveTo(x0,y0);for(int j=0;j
7、nVertex;j+)for(int i=1;iLineTo(xa,ya);Sleep(millisecond);s=s%nVertex; pDC-SelectObject(oldPen);/绘制魔术三角void CDiamondView:DrawTriangle()int time=100;int t=30;CDC *pDC = GetDC(); InvalidateRect(NULL); UpdateWindow(); while(t0)POINT vertex16 = 360,116, 105,555,512,555,464,470,258,470,460,116;CBrush newB
8、rush;newBrush.CreateSolidBrush(RGB(rand()%256,rand()%256,rand()%256);CRgn newRgn1,newRgn2,newRgn3; newRgn1.CreatePolygonRgn(vertex1, 6, WINDING); pDC-FillRgn(&newRgn1,&newBrush); Sleep(time);InvalidateRgn(&newRgn1);/强制清屏POINT vertex26 = 460,116,258,470,362,470,460,290,666,644,718,555; newRgn2.Create
9、PolygonRgn(vertex2, 6, WINDING); pDC-FillRgn(&newRgn2,&newBrush); Sleep(time);InvalidateRgn(&newRgn2);/强制清屏POINT vertex36 = 105,555,155,644,666,645,460,290,410,380,512,555; newRgn3.CreatePolygonRgn(vertex3, 6, WINDING); pDC-FillRgn(&newRgn3,&newBrush); Sleep(time);InvalidateRgn(&newRgn3);/强制清屏t-;/绘制
10、递归圆/nDepth:递归深度void CDiamondView:DrawRecursionCircle(int nDepth)double x18,y18,x28,y28,a10000,b10000; double t=(2*pi)/8; int n=1;int t1=0;int r=100;int x=300,y=300;CDC *pDC = GetDC(); InvalidateRect(NULL); UpdateWindow(); CPen newPen,*oldPen; newPen.CreatePen(PS_SOLID,2,RGB(0,0,0); oldPen = pDC-Sele
11、ctObject(&newPen); CRect rect(200,200,400,400); pDC-Ellipse(&rect);while(n= nDepth)if(n=1) for (int i=0;iEllipse(&rect1); else if(n=2)for(int i=0;i8;i+)x2i=x1i; y2i=y1i; for(int i=0;i8;i+)x=x2i;y=y2i;for(int i=0;iEllipse(&rect1); t1+; else int m=1;for(int i=1;i=n;i+) m=m*8;for(int i=0;i(m/8);i+)x=ai;y=bi;for(int i=0;iEllipse(&rect1); t1+; r=r*0.3;n+;6. 程序运行结果图 1 N=24,r=150时所绘制的金刚石图案图 2 魔术三角图 3 递归圆7. 总结通过这次实验,我认识到了自身在编程上的欠缺与不足,同时让我了解了更多VC+在绘图方面的应用,激发了我学习这门课程的浓厚兴趣。希望在今后的学习中,自己能尽最大努力掌握这门课程。同时也提醒自己要更仔细的对待所学的东西,不能马虎大意。专心-专注-专业