ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:277.95KB ,
资源ID:9934040      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-9934040.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(计算机图形学实验报告.docx)为本站会员(b****8)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

计算机图形学实验报告.docx

1、计算机图形学实验报告计算机图形学实验报告*学 号: * 班 级: 计算机12-2班 实验地点: 逸夫楼507 实验时间: 15.04.10 15.04.17 实验一1实验目的和要求理解直线生成的原理;掌握典型直线生成算法;掌握步处理、分析实验数据的能力;编程实现DDA算法、Bresenham中点算法;对于给定起点和终点的直线,分别调用DDA算法和Bresenham中点算法进行批量绘制,并记录两种算法的绘制时间;利用excel等数据分析软件,将试验结果编制成表格,并绘制折线图比较两种算法的性能。2实验环境和工具开发环境:Visual C+ 6.0实验平台:Experiment_Frame_One

2、(自制平台)3实验结果3.1程序流程图(1)DDA算法 是 否 否 是 是(2)Mid_Bresenham算法 是 否 否是 是 是 否是 否3.2程序代码/-算法实现-/绘制像素的函数DrawPixel(x, y);(1)DDA算法void CExperiment_Frame_OneView:DDA(int X0, int Y0, int X1, int Y1) /-请实现DDA算法-/ float k, b; float d; k = float(Y1 - Y0)/float(X1 - X0); b = float(X1*Y0 - X0*Y1)/float(X1 - X0); if(fab

3、s(k) X1) int temp = X0; X0 = X1; X1 = temp; int x; float y; x = (int)X0; y = (float)Y0; while(x Y1) int temp = Y0; Y0 = Y1; Y1 = temp; float x; int y; x = (float)X0; y = (int)Y0; while(y dy) D = dx - 2*dy; while(x = X1) DrawPixel(x, y); if(D 0) y = y +1; D = D + 2*dx - 2*dy; else D = D - 2*dy; x+; e

4、lse D = dy - 2*dx; while(y = Y1) DrawPixel(x, y); if(D 0) x = x +1; D = D + 2*dy - 2*dx; else D = D - 2*dx; y+; return;3.3运行结果(1)DDA算法(2)Mid_Bresenham算法3.4运行结果分析DDA算法直观,实现简单。但是涉及浮点数运算,不利于硬件实现。Mid_Bresenham算法比DDA算法简单。两种算法实现生成的直线也可能会有不同。4实验心得 通过实验,学习掌握了两种直线的扫描转换算法。不同方法有不同的优点,实现结果也有可能不同。需要通过比较,确定哪种方法更优

5、,更符合正确结果。实验二1 实验目的和要求理解多边形扫描转换的原理;掌握典型多边形扫描转换算法;掌握步处理、分析实验数据的能力;编程实现基本X-扫描线转换算法(必做);2 实验环境和工具 开发环境:Visual C+ 6.0实验平台:Polygon_Conversion(自制平台)3 实验结果3.1 程序流程图X-扫描线转换算法 是 否 是3.2 程序代码/*功能:X-扫描线转换算法参数说明: vertices2-顶点列表 VertexNum -顶点数目备注: DrawPixel(int x, int y) -绘制像素点(x, y)*/void CPolygon_ConversionView:

6、X_Scan_Line_Conersion(int Vertices2, int VertexNum) int ymax, ymin,count; float k; ymax=Vertices01; ymin=Vertices01; for(int p =0 ; p ymax) ymax=Verticesp1; if(Verticesp1 ymin) ymin=Verticesp1; int Xn100, i, ymax2, ymin2, temp; for( i = ymin ; i = ymax ; i+) /求交点 count=0; for( int j = 0; j Vertices0

7、1) /线段的y最大值与最小值 ymax2=Verticesj1; ymin2=Vertices01; else ymax2=Vertices01; ymin2=Verticesj1; if(iymin2) /判断交点是否在线段上 k= (float) ( (float)(Verticesj0-Vertices00) / (float)(Verticesj1-Vertices01) ); Xncount=(int) ( (k * (float)i - k *(float) Vertices01 + (float)Vertices00) + 0.5); count+; else if( i =

8、Verticesj1 ) /扫描线经过线段顶点,只算前一个顶点 if( (Verticesj-11 i) & (Vertices01 i) Xncount=Verticesj0; count+; Xncount=Verticesj0; count+; else if( (Verticesj-11 i) | (Verticesj-11 i) & (Vertices01 Verticesj+11) ymax2=Verticesj1; ymin2=Verticesj+11; else ymax2=Verticesj+11; ymin2=Verticesj1; if(iymin2) k= (float

9、) ( (float) (Verticesj0-Verticesj+10) / (float) (Verticesj1-Verticesj+11) ); Xncount=(int) ( (k *(float) i - k * (float)Verticesj+11 + Verticesj+10) + 0.5); count+; else if( i = Verticesj1 ) /扫描线经过线段顶点,只算前一个顶点 if(j != 0) /交点不为第一和最后一点 if( (Verticesj-11 i) & (Verticesj+11 i) Xncount=Verticesj0; count+

10、; Xncount=Verticesj0; count+; else if( (Verticesj-11 i) | (Verticesj-11 i) & (Verticesj+11 i) & (Verticesj+11 i) Xncount=Verticesj0; count+; Xncount=Verticesj0; count+; else if( (VerticesVertexNum-11 i) | (VerticesVertexNum-11 i) & (Verticesj+11 i) ) Xncount=Verticesj0; count+; for( int m = 0; m cou

11、nt-1; m+ ) /交点x坐标排序 for( int n = m+1; n Xnn ) temp=Xnm; Xnm=Xnn; Xnn=temp; for( int a = 0; a count; a+=2 ) /绘制像素点 for( int b = Xna; b Xna+1; b+) DrawPixel(b, i); return;3.3 运行结果3.4 运行结果分析 从运行结果看可以实现任意多边形的区域填充。4 实验心得 通过这个实验,学习掌握了X-扫描线转换算法,实现了区域填充。编写算法过程中,不断改进算法,在同学帮助下解决困难。但是还有改进的有效边表算法没有去编写实现,程序在不断改进中不断优化,我们也可以从中学到许多知识。

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2