计算机图形学实验报告.docx_第1页
计算机图形学实验报告.docx_第2页
计算机图形学实验报告.docx_第3页
计算机图形学实验报告.docx_第4页
计算机图形学实验报告.docx_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机图形学实验报告 学校: 合肥工业大学 姓名: 学号: 班级: 实验二:直线的生成实验目的和要求理解直线生成的原理;掌握典型直线生成算法;掌握步处理、分析实验数据的能力;编程实现DDA算法、Bresenham中点算法;对于给定起点和终点的直线,分别调用DDA算法和Bresenham中点算法进行批量绘制,并记录两种算法的绘制时间;利用excel等数据分析软件,将试验结果编制成表格,并绘制折线图比较两种算法的性能。实验环境和工具 开发环境:Visual C+ 6.0 实验平台:Experiment_Frame_One(自制平台)实验结果程序代码: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-Y0;x = X0;y = Y0;if(abs(dx)abs(dy) /max分两种情况,|1/espl|=1epsl=abs(dx);elseepsl=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); /光栅化+0.5后四舍五入x+=xIncre;y+=yIncre;void CExperiment_Frame_OneView:Mid_Bresenham(int X0, int Y0, int X1, int Y1)/-请实现Mid_Bresenham算法-/*int x,y,dx,dy,e;dx=X1-X0;dy=Y1-Y0;e=-dx;x=X0;y=Y0;while(x0)y+;e-=2*dx;*/ int dx,dy,d,UpIncre,DownIncre,x,y; /只考虑0k X1) /判断正负x=X1;X1=X0;X0=x;y=Y1;Y1=Y0;Y0=y;dx=X1-X0; dy=Y1-Y0;d=dx-2*dy; /d=yi+0.5-k(xi+1)-b;d=dx-2*dy;x=X0; y=Y0; UpIncre=2*dx-2*dy;DownIncre=-2*dy;while(x = X1) /若d=0DrawPixel(x,y);x+;if(d 0)y+;d+=UpIncre;elsed+=DownIncre;运行结果:DDA算法演示:中点BreshenHam算法演示:运行结果分析DDA算法:优点:与基本算法相比,在扫描过程中减少了浮点运算,提高了效率。缺点:由于x与xd,y与yd必须用浮点来表示,且每一步都要进行四舍五入取整,不利于硬件实现,故效率有待提高。Bresenham算法:Bresenham算法的优点在于可以采用增量计算,使得对于每一列,只要检查一个误差项的符号,就可以确定该列所求的像素 实验二:多边形扫描转换算法实验目的和要求理解多边形扫描转换的原理;掌握典型多边形扫描转换算法;掌握步处理、分析实验数据的能力; 编程实现基本X-扫描线转换算法(必做);编程实现有效边表转换算法(选做)实验环境和工具 开发环境:Visual C+ 6.0 实验平台:Polygon_Conversion(自制平台)实验结果程序代码:Void CPolygon_ConversionView:X_Scan_Line_Conersion(int Vertices2, int VertexNum)if(VertexNum3)return;vector cross;int i,j,yscan,ymin,ymax;int x1,x2,y1,y2,x,y;int tmp;ymax=0xffffffff;ymin=0x7fffffff;for(i=0;iVertexNum;+i)if(Verticesi1ymax)ymax=Verticesi1;for(yscan=ymin;yscan=ymax;+yscan)for(i=0;iVertexNum;+i)x1=Verticesi0;y1=Verticesi1;x2=Vertices(i+1)%VertexNum0;y2=Vertices(i+1)%VertexNum1;if(y1=y2)continue ;if(yscanmax(y1,y2)continue;x=int(yscan-y1)*(x2-x1)*1.0/(y2-y1)+x1+0.5);if(yscan=y1)continue;if(yscan=y2)tmp=0;if(y1yscan)+tmp;if(Vertices(i+2)%VertexNum1yscan)+tmp;if(tmp%2=0)continue;cross.push_back(x);sort(cross.begin(),cross.end();for(i=0;icross.size();i+=2)for(j=crossi;j=crossi+1;+j)DrawPixel(j,yscan);cross.clear();return;运行结果:运行结果分析 扫描线与多边形相交的边分别位于扫描线同侧,且 yiyi-1,yiyi-1,yiyi+1,则计0个交点(不填色)。扫描线与多边形边界重合 (当要区分边界和边界内区域时需特殊处理),则计1个交点。具体实现时,只需检查顶点的两条边的另外两个端点的y值。按这两个y值中大于交点y值的个数是0,1,2来决定实验总结:计算机图形学是关于图形图像在计算机中存储,表达和显示的科学,设计了软硬件的许多方面。通过了8周的学习,大概了解了计算机图形学最基础的东西

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论