欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    计算机图形学实验报告(共16页).doc

    • 资源ID:13951167       资源大小:336KB        全文页数:16页
    • 资源格式: DOC        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    计算机图形学实验报告(共16页).doc

    精选优质文档-倾情为你奉上计算机图形学实验报告姓 名: 谢云飞 学 号: 班 级: 计算机科学与技术11-2班 实验地点: 逸夫楼507 实验时间: 2014.03 专心-专注-专业实验1 直线的生成1 实验目的和要求理解直线生成的原理;掌握典型直线生成算法;掌握步处理、分析实验数据的能力;编程实现DDA算法、Bresenham中点算法;对于给定起点和终点的直线,分别调用DDA算法和Bresenham中点算法进行批量绘制,并记录两种算法的绘制时间;利用excel等数据分析软件,将试验结果编制成表格,并绘制折线图比较两种算法的性能。2 实验环境和工具 开发环境:Visual C+ 6.0 实验平台:Experiment_Frame_One(自制平台)。 本实验提供名为 Experiment_Frame_One的平台,该平台提供基本绘制、设置、输入功能,学生在此基础上实现DDA算法和Mid_Bresenham算法,并进行分析。n 平台界面:如Error! Reference source not found.所示n 设 置:通过view->setting菜单进入,如Error! Reference source not found.所示n 输 入:通过view->input菜单进入.如Error! Reference source not found.所示n 实现算法:u DDA算法:void CExperiment_Frame_OneView:DDA(int X0, int Y0, int X1, int Y1)Mid_Bresenham法:void CExperiment_Frame_OneView:Mid_Bresenham(int X0, int Y0, int X1, int Y1)3 实验结果3.1 程序流程图1)DDA算法流程图: 开始定义两点坐标差dx,dy,以及epsl,计数k=0,描绘点坐标x,y,x增量xIncre,y增量yIncre输入两点坐标x1,y1,x0,y0dx=x1-x0,dy=y1-y0; 若|dx|>|dy| 反之 epsl=|dx| epsl=|dy| .xIncre=dx/epsl; yIncre=dy/epsl填充(强制整形)(x+0.5,y+0.5); 横坐标x+xIncre;纵坐标y+yIncre; 若k<=epsl k+ 结束2) Mid_Bresenham算法流程图 开始 定义整形dx,dy,判断值d,以及UpIncre,DownIncre,填充点x,y输入x0,y0,x1,y1 若x0>x1 反之x=x1;x1=x0;x0=x; x=x0; Y=y1;y1=y0;y0=y; y=y0;.坐标差dx=x1-x0;dy=y1-y0;判断值d=dx-2*dy;UpIncre=2*dx-2*dy;DownIncre=-2*dy;填充点(x,y),且x=x+1; 若d<0 反之y=y+1,且d=d+UpIncre d=d+DownIncre . 若x<=x1 结束3.2 程序代码void CExperiment_Frame_OneView:DDA(int X0, int Y0, int X1, int Y1)/-请实现DDA算法-/ int dx,dy,epsl,k;float x,y,xIncre,yIncre;dx=X1-X0;dy=Y1-X0;x=X0;y=Y0;if(abs(dx)>abs(dy) epsl=abs(dx);else epsl=abs(dy);xIncre=(float)dx/(float)epsl;yIncre=(float)dy/(float)epsl; for(k=0;k<=epsl;k+)DrawPixel(int)(x+0.5),(int)(y+0.5);x+=xIncre;y+=yIncre;void CExperiment_Frame_OneView:Mid_Bresenham(int X0, int Y0, int X1, int Y1)/-请实现Mid_Bresenham算法-/int dx,dy,d,UpIncre,DownIncre,x,y,xend;if(X0>X1)x=X1;X1=X0;X0=x;y=Y1;Y1=Y0;Y0=y;x=X0;y=Y0;dx=X1-X0;dy=Y1-Y0;d=dx-2*dy;UpIncre=2*dx-2*dy;DownIncre=-2*dy;while(x<X1)DrawPixel(x,y);x+;if(d<0)y+;d+=UpIncre;else d+=DownIncre;3.3 运行结果3.4 运行结果分析 DDA算法基本上没有什么问题,Mid_Bresenham算法在网格尺寸比较大时误差较大,通过改变网格尺寸大小即能较为精确地描绘出所绘直线。总之在误差允许的范围类,实验结果令人满意。4 思考题(可选)如何测试比较算法的性能?n 提示1:因为绘制1条直线时间很短,所以需要绘制大量直线才能比较它们之间的性能;n 提示2: drawpixel需要耗费时间,但它的时间性能和直线绘制算法无关,因此在比较不同算法性能时,应该屏蔽它的影响,如何屏蔽?5 实验心得 通过此次实验,我对典型的直线绘制算法DDA算法、Bresenham中点算法有了进一步的了解与掌握。由于第一次做图形学的相关实验,陌生感还是有的,对平台也不太掌握,所以一开始很难入门,但在老师的帮助和同学的相互讨论下,结果还是可观的。两个基本算法都得以实现。希望随着学习的加深,后续的实验能够做的更好。实验2 多边形扫描转换算法1实验目的和要求理解多边形扫描转换的原理;掌握典型多边形扫描转换算法;掌握步处理、分析实验数据的能力;编程实现基本X-扫描线转换算法(必做);编程实现有效边表转换算法(选做)。2实验环境和工具本试验提供自带实验平台 开发环境:Visual C+ 6.0本实验提供名为 Polygon_Conversion的平台,该平台提供基本绘制、设置、输入功能,学生在此基础上实现X-扫描线算法和有效边表转换算法。多边形输入:n 用户按【功能】à【输入多边形】菜单开始输入多边形;n 单击鼠标左键输入多边形顶点;n 点击鼠标右键结束多边形输入,并将最后一个顶点和第一个顶点进行连接;l 参数设置:n 用户按“【功能】à【设置】”启动设置对话框n 设置内容:u 填充色u 是否填充多边形u 选择转换算法n 实现扫描转换算法u X-扫描线转换算法:void CPolygon_ConversionView:X_Scan_Line_Conersion (int Vertices2, int VertexNum)u 有效边表转换算法:void CPolygon_ConversionView:Active_Edge_Table_Conersion(int Vertices2, int VertexNum)3实验结果3.1程序流程图X-扫描线转换算法: 开始(若构点小于3个结束)确定多边形所占有的最大扫描线,得到多边形顶点的最小和最大y值(ymin和 ymax)从ys=ymin开始扫描,且计算每条边的方程式 记录ys与多边形各边交点 (判断并取舍交点:顶点的两条边的另外两个端点的y1,y2的值比ys大的个数为0,1,2,则取交点对应个数为0,1,2;) 取完交点横坐标后排序交点横坐标x数组, 并配对(1,2)(3,4) 填充配对区间 若扫描线ys<=ymax (结束)3.2程序代码void CPolygon_ConversionView:X_Scan_Line_Conersion(int Vertices2, int VertexNum)int ymin,ymax,x10,i,j,n=0,x1,x2,y1,y2,x0,ys;ymax=0xffffffff;ymin=0x7fffffff;if(VertexNum<=3)return;for(i=0;i<VertexNum;+i) if(Verticesi1<ymin)ymin=Verticesi1;if(Verticesi1>ymax)ymax=Verticesi1;for(ys=ymin;ys<=ymax;ys+)n=0;for(j=0;j<VertexNum;+j)x1=Verticesj0;y1=Verticesj1;x2=Vertices(j+1)%VertexNum0; y2=Vertices(j+1)%VertexNum1;if(y1=y2)continue ;if(ys<min(y1,y2)|ys>max(y1,y2)continue;x0=int(ys-y1)*(x2-x1)/(y2-y1)+x1+0.5);if(ys=y1)continue;if(ys=y2)int tmp=0;if(y1>ys)+tmp;if(Vertices(j+2)%VertexNum1>ys)+tmp;if(tmp%2=0)continue;xn=x0;n+;sort(x,x+n);/排序for(i=0;i<n;i+=2) /填充for(j=xi;j<=xi+1;+j)DrawPixel(j,ys);return;3.3运行结果3.4运行结果分析X扫描线算法填充算法中比较简单的算法。它通过求交、排序、交点配对、区间填色的过程一次处理每一条扫描线。而且对于端点独立进行判断(当做一个或者两个),很好的实现了填充效果。4思考题(可选)5实验心得 通过此次实验,我对X-扫描线转换算法和有效边表转换算法都有了一定的了解,并能在指导下完成相应的函数的编写。另一方面,我的数据分析和处理能力也得到了一定的提升。正可谓收获匪浅。实验3 BSpline曲线绘制1实验目的和要求l 理解掌握自由曲线生成的基本原理和方法;编程实现三次B样条曲线:l 均匀周期性B样条曲线l 开放均匀B样条曲线2实验环境和工具本试验提供自带实验平台l 开发环境:Visual C+ 6.0l 实验平台:Polygon_Conversion(自制平台)3实验结果3.1程序流程图1)基函数的生成:float CFreeform_CurveView:BKM(float t, int k, int m, float nodes) float value; if (m=1) if (t>= nodesk&&t<nodesk+1) value = 1; else value = 0; else if (m > 1) value= (Divide(t-nodesk),(nodesk+m-1-nodesk)*BKM(t,k,m-1,nodes)+ Divide(nodesk+m-t),(nodesk+m-nodesk+1)*BKM(t,k+1,m-1,nodes); return value;2)生成曲线的节点矢量:bool CFreeform_CurveView:Create_Nodes_Vector(int n, int m, int SplineType, float nodes)switch(SplineType) case 0: /均匀B样条曲线/添加代码.for(int i=0;i<=n+m;i+)nodesi=i;break;case 1: /开放均匀B样条曲线/添加代码.int i=0;for(;i<m;i+) nodesi=0;for(;i<=n;i+)nodesi=i-m+1;for(;i<=n+3;i+)nodesi=n-m+2;break;default:return false;return true;3.3运行结果3.4运行结果分析这次试验是照着书上的生成曲线的公式编写的,分别绘制出均匀B样条曲线和开放均匀B样条曲线,实现难度不大。从曲线可以看出,两个曲线都很好的拟合了选择的点,均匀B样条曲线似乎效果更佳。 4实验心得 通过此次实验,我对基本曲线生成算法有了一定的掌握。由于其本身就很掌握,所以实现起来困难重重。可能是对三次B样条曲线的理解还不够透彻,希望今后的学习能够让我对其有进一步的了解与把握。

    注意事项

    本文(计算机图形学实验报告(共16页).doc)为本站会员(飞****2)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开